2014-06-21 40 views
0

我需要使用正則表達式在Oracle DB中創建觸發器的幫助。我必須找到一個解決方案,當插入數據不像正則表達式時,它會顯示一條錯誤消息。但我找不到,該怎麼做。具有正則表達式的SQL觸發器

`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;` 

任何想法?謝謝!

+0

錯誤(4,1):PL/SQL:語句被忽略 錯誤(4,5):PLS-00306調用'NOT_LIKE'時參數錯誤或參數類型錯誤 – 3georgo3

回答

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

+1

謝謝!我是SQL新手,尤其是寫作觸發器,這對我有很大幫助! :) – 3georgo3