Недавно, я встретился с a BEFORE INSERT OR UPDATE
включите таблицу. В этом триггере автор полагается INSERTING
и UPDATING
функции (оба возврата a BOOLEAN
) из DBMS_STANDARD
пакет, чтобы определить, был ли триггер запущен перед вставкой или перед обновлением.
Например:
CREATE OR REPLACE TRIGGER CUSTOMER_TRIGGER
BEFORE INSERT OR UPDATE ON CUSTOMER
FOR EACH ROW
BEGIN
IF INSERTING THEN
/* Some code */
END IF;
IF UPDATING THEN
/* Some other code */
END IF;
END;
Да, я знаю, что два, отдельные триггеры, возможно, были записаны для обработки этих двух событий отдельно. Это не точка этого вопроса.
После поиска и устранения неисправностей ошибки, будучи принятым этими функциями, мы получили слово (от Поддержки Oracle), что "dbms_standard стандартные программы действительно не предназначены, чтобы быть названным пользовательскими программами". Действительно ли это верно?
Я нахожу это немного странным, рассматривая другие процедуры (такой как RAISE_APPLICATION_ERROR
и COMMIT
) являются наиболее часто используемыми в МН / коде SQL.