gpt4 book ai didi

oracle - 触发器无法初始化变量

转载 作者:行者123 更新时间:2023-12-01 05:19:45 25 4
gpt4 key购买 nike

我有审计触发器,它存储对 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;

这通常发生在我删除行时,但我不确定。
关于为什么会发生这种情况的任何想法?该代码对我来说看起来不错......

最佳答案

变量 v_action 发生了一些奇怪的事情初始化,我猜。尝试处理所有 3 种可能性:

      v_action:= null;
IF INSERTING THEN
v_action := 'A';
ELSIF UPDATING THEN
v_action := 'U';
ELSIF DELETING THEN
v_action := 'D';
END IF;

关于oracle - 触发器无法初始化变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17348401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com