例如,我有一个表t_1,我只插入id
值,但触发后应插入,更新值id_2
并将id_2
设置为id
:< / p>
create table t_1(
id number(10),
id_1 number(10)
);
我创建了触发器:
create or replace trigger id_to_id_2
after insert
on t_1
for each row
begin
update t_1 set id_2=:new.id where id = new.id;
end;
/
但是当我尝试插入时,我收到错误:
DB constraint error: ORA-04091: table t_1is mutating, trigger/function may
not see it\nORA-06512: at
我不明白这个错误,你能解释一下我做错了什么吗?
答案 0 :(得分:3)
您需要之前插入触发器,如下所示:
create or replace trigger id_to_id_2
before insert
on t_1
for each row
begin
:new.id_2 := :new.id;
end;
答案 1 :(得分:1)
此处也提出了类似的问题:Table is mutating, trigger/function may not see it (stopping an average grade from dropping below 2.5) 在这里:https://dba.stackexchange.com/questions/5432/what-are-the-causes-and-solutions-for-mutating-table-errors
触发器可能不是你想要达到目标的正确方法。至少,正如第二个链接所说,在所有可能的情况下,您的指示结果都是不可预测的。如果上面提到的链接对您没有帮助,我建议您提供有关您的意图的更多信息。