ORA-04091:表名正在变异

时间:2013-01-21 14:51:10

标签: plsql triggers

将数据插入表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:表名发生变异,触发/功能可能看不到它

问题可能是由尝试修改或查询当前正由触发触发器的语句修改的表的触发器引起的。 有谁知道如何修改触发器以使其正确?

1 个答案:

答案 0 :(得分:2)

你知道问题是什么,所以只需稍微阅读你的代码:你更新你触发的同一个表。

我想在你的情况下你只需要放:NEW.actualTS:=current_timestamp,而不使用更新语句。