【问题标题】:SQL Oracle Trigger For Calculating and Updating Table用于计算和更新表的 SQL Oracle 触发器
【发布时间】:2022-01-14 16:31:19
【问题描述】:

我正在尝试为TRAVELEXPENSE 表的插入操作创建触发器。

这是我更新的代码

create or replace TRIGGER tr_updates_requesttotal 
AFTER INSERT  ON TRAVELEXPENSE 
FOR EACH ROW 
BEGIN
UPDATE REIMBURSEMENTREQUEST 
SET ReimbursementTotal = :NEW.ExpenseAmount
WHERE ReimbursementRequestID = :NEW.ReimbursementRequestID;
END;

【问题讨论】:

  • 您需要通过ON 条件而不是WHEREJOIN 表。但是在成功编译触发器后,您将面临ORA-04091: table TRAVELEXPENSE is mutating,因为在行级触发器中您无法从同一个表中进行选择。根据您的代码,您不需要访问此表,只需直接设置新金额(或您的子查询无效并返回多行)。请提供带有示例数据的示例表,并描述您希望通过一些连续交易实现的目标。

标签: sql oracle triggers


【解决方案1】:

我可以看到两个错误:

WHERE TE.ReimbursementRequestID = RE.ReimbursementRequestID

应该是

ON TE.ReimbursementRequestID = RE.ReimbursementRequestID

WHERE ReimbursementRequestID = NEW.ReimbursementRequestID

应该是

WHERE ReimbursementRequestID = :NEW.ReimbursementRequestID

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多