将数据插入表 A 时出现 ORA-04091 错误。表 A 记录正在引用同一表 1:N 中的其他记录。 父记录的 fk_id = null,子记录的 fk 不为 null。
create or replace trigger TRBI_A
BEFORE INSERT ON A
for each row
BEGIN
IF :new.fk_id IS NOT NULL then
UPDATE A SET actualTS = CURRENT_TIMESTAMP WHERE id = :new.fk_id;
END IF;
END;
ORA-04091: table name is mutating, trigger/function may not see it
该问题可能是由触发器尝试修改或查询当前正在由触发触发器的语句修改的表引起的。 有谁知道如何修改触发器以使其正确?
最佳答案
您知道问题是什么,所以只需稍微阅读一下您的代码:您更新了放置触发器的同一个表。
我想在你的情况下,你只需要输入 :NEW.actualTS:=current_timestamp
,而不使用更新语句。
关于plsql - ORA-04091 : table name is mutating,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14441167/