Oracle 触发器发出ORA-04091错误
我在Oracle 触发器发出ORA-04091错误,oracle,triggers,ora-04091,Oracle,Triggers,Ora 04091,我在表tbl\u campboss\u报告上有一个插入后触发器,但它给了我 tbl\u campboss\u报告正在变异,触发器/函数可能看不到它 这是我的触发器: BEGIN update tbl_campboss_report c set c.units=(select b.units from tbl_campboss_master b where b.details=:new.details); END; 有人能帮我吗? 提前感谢请考虑将触发器更改为“插入前”。您不需要在触发器中写
表tbl\u campboss\u报告
上有一个插入后触发器,但它给了我
tbl\u campboss\u报告
正在变异,触发器/函数可能看不到它
这是我的触发器:
BEGIN
update tbl_campboss_report c set c.units=(select b.units from tbl_campboss_master b where b.details=:new.details);
END;
有人能帮我吗?提前感谢请考虑将触发器更改为“插入前”。您不需要在触发器中写入UPDATE语句。只需将值分配给所需的列
:new.units = <value that you get from the query>;
:new.units=;
考虑将触发器更改为插入前。您不需要在触发器中写入UPDATE语句。只需将值分配给所需的列
:new.units = <value that you get from the query>;
:new.units=;
您不能更新调用触发器的相同记录,details
是唯一键吗?您正在尝试更新多条记录吗?详细信息不是PK,我只更新一条记录如果您正在更新的记录与您刚刚插入的记录相同,则使用@Noel。如果您在插入行的SQL中包含该列的填充,则这将是一个更有效的操作。这一价值的来源也将更加明显。当然,如果根本不填充它,并在需要时从tbl_campboss_主表中获取值,可能会更有效。您不能更新调用触发器的相同记录,details
是唯一的键吗?您正在尝试更新多条记录吗?详细信息不是PK,我只更新一条记录如果您正在更新的记录与您刚刚插入的记录相同,则使用@Noel。如果您在插入行的SQL中包含该列的填充,则这将是一个更有效的操作。这一价值的来源也将更加明显。当然,完全不填充它并在需要时从tbl_campboss_主表中获取值可能更有效。(我已经做了,所以不用它很遗憾…(我已经做了,所以不用它很遗憾…)