Недавно я столкнулся с триггером BEFORE INSERT OR UPDATE
на столе.В этом триггере автор полагается на функции INSERTING
и UPDATING
(обе возвращают 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 на самом деле не предназначены для вызова пользовательскими программами»,Это правда?
Я нахожу это немного странным, учитывая, что в коде PL / SQL обычно используются другие процедуры (например, RAISE_APPLICATION_ERROR
и COMMIT
).