Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更新前Oracle SQL变异表触发器_Sql_Oracle_Triggers_Mutating Table_Beforeupdate - Fatal编程技术网

更新前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触发器因变异表异常而失败的答案。