将 MySQL 触发器移动到 DB2;关键字 NEW 的问题

Moving MySQL trigger to DB2; issue with keyword NEW

我有这个触发器在 MySQL:

CREATE TRIGGER Recharge_trigger
AFTER INSERT ON Recharges
FOR EACH ROW
  UPDATE Balances
  SET Balance = Balance + NEW.Amount
  Where Uid = NEW.Uid AND Stid = NEW.Stid;

每当我在 Recharges table 中插入一行时,它会自动更新 Balances table 中的 balance 列。

然而,当我尝试在 DB2 中 运行 它时,它给出了这个错误:

Server Error: Error for batch element #1: "NEW.AMOUNT" is not valid in the context where it is used.. SQLCODE=-206, SQLSTATE=42703, DRIVER=3.66.46

我认为是关键字 NEW 搞砸了。有什么办法可以在 DB2 中编写它吗?

我无权访问任何 DB2 数据库,因此我无法对其进行测试,但查看文档我认为您需要包含一个 REFERENCING 子句。试试这个:

 CREATE TRIGGER Recharge_trigger
 AFTER INSERT ON Recharges
 REFERENCING NEW AS N
 FOR EACH ROW MODE DB2SQL
 BEGIN ATOMIC
  UPDATE Balances SET Balance = Balance + N.Amount Where Uid = N.Uid AND Stid = N.Stid;
 END