更新前Oracle SQL变异表触发器

时间:2017-12-29 07:00:47

标签: sql oracle triggers mutating-table beforeupdate

我想为表创建更新触发器。触发器已创建,但是当我更新列finish时,它会说变异表。

这是我的代码

    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;

这个触发器给了我'Mutating Table'错误,到目前为止我一直无法修复它。有什么建议吗?感谢

1 个答案:

答案 0 :(得分:2)

首先,你根本不应该这样做。无论何时需要,都无法存储容易计算的值。

截至您的问题:没有更新:

begin
  :new.cost := (:new.finish - :new.start) * 20000;
end;