Простое игнорирование исключения не всегда является хорошим способом для разработки вашей программы. По крайней мере, зарегистрируйте ошибки где-нибудь для дальнейшего наблюдения.
Обратите внимание, что ваш оператор INSERT
может быть переписан с использованием простого insert
(без select
) и условия IF
.
CREATE OR REPLACE TRIGGER system_notification_audit AFTER
INSERT OR UPDATE ON system_notification
FOR EACH ROW
BEGIN
IF
:old.preference <>:new.preference OR :old.frequency <>:new.frequency
OR :new.is_high <>:old.is_high OR :new.is_required <>:old.is_required
THEN
INSERT INTO system_notification_log (
id,
name,
description,
preference,
frequency,
is_high,
is_required,
updated_by,
updated_date
) VALUES (
:new.id,
:new.name,
:new.description,
:new.preference,
:new.frequency,
:new.is_high,
:new.is_required,
:new.updated_by,
:new.updated_date
);
END IF;
EXCEPTION WHEN OTHERS THEN
pr_trigger_logs(trig_name => 'system_notification_audit',
err_msg => DBMS_UTILITY.FORMAT_ERROR_BACKTRACE());
-- calling an error logging procedure.
END;
/
Я не дам вам определение процедуры pr_trigger_logs
. В качестве упражнения я позволю вам придумать это!