带正则表达式的SQL触发器

时间:2014-06-21 09:54:57

标签: sql triggers oracle10g regex-negation

我需要帮助在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;`

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

您的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