【问题标题】:Oracle SQL mutating table trigger before update更新前的 Oracle SQL 变异表触发器
【发布时间】:2017-12-29 07:00:47
【问题描述】:

我想为一个表创建一个更新触发器。触发器已创建,但当我更新列 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;

这个触发器给了我“变异表”错误,到目前为止我一直无法修复它。有什么建议吗?谢谢

【问题讨论】:

标签: sql oracle triggers mutating-table beforeupdate


【解决方案1】:

首先,您根本不应该这样做。存储在需要时可以轻松计算的值是没有用的。

至于你的问题:没有更新:

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

【讨论】:

  • 非常非常感谢@Littlefoot,它的工作原理,我尝试了相同的代码,但我只是使用 = 而不是 := ,我必须更加小心
猜你喜欢
  • 1970-01-01
  • 2022-11-12
  • 1970-01-01
  • 2016-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-23
  • 1970-01-01
相关资源
最近更新 更多