我已经,搜索过并阅读了很多关于这个问题的答案,但无法就如何做到这一点得到明确答案。
我的查询如下:
DELIMITER //
CREATE TRIGGER `Stock_Update` AFTER INSERT ON `Store_db`.`Product_Supply` FOR EACH ROW
BEGIN
UPDATE `Store_db`.`Stock` AS `ST`
SET `ST`.`Stock_Quantity` = `ST`.`Stock_Quantity` + `Product_Supply`.`Supply_Quantity`
WHERE `ST`.`Product_ID` = `Product_Supply`.`Product_ID`;
END//
DELIMITER ;
提前致谢。
P.S。一个更通用的答案也会很好,也可能对其他人有帮助
答案 0 :(得分:4)
在给定表的触发器内,对该表字段的所有引用都必须以NEW.
或OLD.
作为前缀,它分别指代更改之后或之前此字段的值
在您的情况下,您可能希望将新插入的数量添加到现有库存中:使用NEW.Supply_Quantity
(不要提及Product_Supply
,这已由NEW
关键字暗示
同样,您当然希望在您的情况下使用NEW.Product_ID
。
请注意,删除时触发器中不提供NEW
,例如插入时触发器中的OLD
。