更新后的突变表

问题描述 投票:0回答:1

有人可以告诉我如何避免此突变表错误(ORA-04091)我必须为此作业使用更新后触发器。

AFTER UPDATE OF QTY,ACTUALPRICE  ON ITEM
FOR EACH ROW
DECLARE
BEGIN
    UPDATE ITEM
    SET ITEMTOT = :new.QTY * :new.ACTUALPRICE
    WHERE ORDID = :old.ORDID AND ITEMID = :old.ITEMID;
END;
oracle plsql database-trigger
1个回答
0
投票

您无法再次在查询本身内触发触发器的表上运行查询。就您而言,我认为您的触发器可以重写为仅设置BEFORE UPDATEITEMTOT触发器:

BEFORE UPDATE OF QTY,ACTUALPRICE ON ITEM
FOR EACH ROW
    :new.ITEMTOT = :new.QTY * :new.ACTUALPRICE
END;
© www.soinside.com 2019 - 2024. All rights reserved.