【问题标题】:SQL trigger with regular expression使用正则表达式的 SQL 触发器
【发布时间】:2014-06-21 09:54:57
【问题描述】:

我需要有关在 Oracle DB 中使用正则表达式创建触发器的帮助。我必须找到一个解决方案,当插入数据不像正则表达式时,它会显示错误消息。但是我找不到,该怎么做。

`CREATE OR REPLACE TRIGGER IC_KONTROLA
BEFORE INSERT OR UPDATE
OF IC_POJ
ON POJISTOVNA
FOR EACH ROW
DECLARE 
IC_KONTROLA_SPATNE EXCEPTION;
BEGIN 
IF (:NEW.IC_POJ NOT LIKE (REGEXP_LIKE (:NEW.IC_POJ,'\d{8}'))) THEN  
RAISE IC_KONTROLA_SPATNE;
END IF;

EXCEPTION
WHEN IC_KONTROLA_SPATNE THEN
RAISE_APPLICATION_ERROR(-203, ' Identifikační číslo neodpovídá 8-číselnému vzoru!');
END;`

有什么想法吗?谢谢!

【问题讨论】:

  • 错误(4,1):PL/SQL:语句被忽略错误(4,5):PLS-00306 调用“NOT_LIKE”时参数的数量或类型错误

标签: sql triggers oracle10g regex-negation


【解决方案1】:

您的REGEXP_LIKE 语法已关闭;

IF (:NEW.IC_POJ NOT LIKE (REGEXP_LIKE (:NEW.IC_POJ,'\d{8}'))) THEN  

...应该只是...

IF NOT REGEXP_LIKE (:NEW.IC_POJ,'\d{8}') THEN  

An SQLfiddle to test with.

【讨论】:

  • 谢谢!!!我是 SQL 新手,尤其是在编写触发器方面,这对我帮助很大! :)
猜你喜欢
  • 1970-01-01
  • 2018-03-15
  • 1970-01-01
  • 2019-08-02
  • 1970-01-01
  • 1970-01-01
  • 2016-07-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多