Как мне получить доступ к значениям таблицы 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;