更新前Oracle SQL变异表触发器
我想为表创建一个更新触发器。触发器已创建,但当我更新列更新前Oracle SQL变异表触发器,sql,oracle,triggers,mutating-table,beforeupdate,Sql,Oracle,Triggers,Mutating Table,Beforeupdate,我想为表创建一个更新触发器。触发器已创建,但当我更新列finish时,它显示mutating table 这是我的密码 CREATE OR REPLACE TRIGGER SET_COST BEFORE UPDATE OF finish ON PAY FOR EACH ROW BEGIN UPDATE PAY SET PAY.COST = (finish-start) * 20000 WHERE PAY.ID=:new.ID; END
finish
时,它显示mutating table
这是我的密码
CREATE OR REPLACE TRIGGER SET_COST BEFORE UPDATE OF finish ON PAY
FOR EACH ROW
BEGIN
UPDATE PAY
SET PAY.COST = (finish-start) * 20000
WHERE PAY.ID=:new.ID;
END;
这个触发器给了我“突变表”错误,到目前为止我还无法修复它。有什么建议吗?谢谢首先,你根本不应该这么做。存储在需要时可以轻松计算的值是没有用的 截至您的问题:无更新:
begin
:new.cost := (:new.finish - :new.start) * 20000;
end;
非常非常感谢@Littlefoot,它正在工作,我尝试了相同的代码,但我只使用了=not:=,我必须更加小心关于StackOverflow有很多关于Oracle触发器因变异表异常而失败的答案。