EMP テーブルの任意の行で実行されたアクションを格納する監査用のトリガーがあります。
このトリガーは正常に機能しますが、場合によっては (非常にまれにしか発生せず、正確な状態を特定できません)、
Oracle エラー: ORA-01400: NULL を ("MY_SCHEMA"."HIST_EMP"."ACTION") に挿入できません
CREATE OR REPLACE TRIGGER HIST_EMP_AIUD
AFTER UPDATE OR INSERT OR DELETE
ON EMP
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
v_action VARCHAR2(1) := 'D';
BEGIN
IF INSERTING THEN
v_action := 'A';
ELSIF UPDATING THEN
v_action := 'U';
END IF;
IF DELETING THEN
INSERT INTO hist_emp (source_rowid, source_date, action)
VALUES (:old.rowid, SYSDATE, v_action);
ELSIF INSERTING OR UPDATING THEN
INSERT INTO hist_emp (source_rowid, source_date, action)
VALUES (:new.rowid, SYSDATE, v_action);
END IF;
EXCEPTION
WHEN OTHERS THEN
--Code to Log
-- <some exception handling should be placed here >
END;
これは通常、行を削除しているときに発生しますが、よくわかりません。なぜこれが起こるのかについて何か考えはありますか?コードは私には大丈夫に見えます...