【发布时间】:2019-03-02 23:24:37
【问题描述】:
如何在触发器中访问INSERTED 表的值?
例如:
INSERT INTO sales (sku, qty)
VALUES
(1001, 5), //I need these values in the trigger
(1002, 1)
...
这是我的触发器:
DELIMITER $$
CREATE TRIGGER after_sales_insert
AFTER INSERT ON sales
FOR EACH ROW BEGIN
UPDATE products
SET NEW.qty = OLD.qty - INSERTED.qty
WHERE sku = INSERTED.sku;
END;
$$
DELIMITER;
注意sales.sku 是products 表的外键。
SQL Server 有 INSERTED 关键字,这似乎不适用于 MySQL。
答案:
NEW.qty 引用了设置了触发器的表上的qty,不是正在更新的表。
CREATE TRIGGER after_sales_insert
AFTER INSERT ON sales
FOR EACH ROW BEGIN
UPDATE products
SET qty = qty - NEW.qty
WHERE sku = NEW.sku;
END;
【问题讨论】: