2

将数据插入表 A 时出现 ORA-04091 错误。表 A 记录正在引用同一个表 1:N 中的其他记录。父记录具有 fk_id = null 并且子记录具有 fk 不为空。

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: 表名发生变化,触发器/函数可能看不到它

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

4

1 回答 1

2

您知道问题出在哪里,所以只需稍微阅读一下您的代码:您更新要放置触发器的同一张表。

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

于 2013-01-21T15:07:35.730 回答