2014-06-21 3 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

Смежные вопросы