更新后变异 table

After Update mutating table

有人能告诉我如何避免这种变异 table 错误 (ORA-04091) 我必须使用 After Update Trigger 来完成这项作业。

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;

您不能运行查询在触发器本身内触发的table。在你的情况下,我认为你的触发器可以重写为 BEFORE UPDATE 触发器,它只设置 ITEMTOT:

BEFORE UPDATE OF QTY,ACTUALPRICE ON ITEM
FOR EACH ROW
    :new.ITEMTOT = :new.QTY * :new.ACTUALPRICE
END;