6

我已经搜索并阅读了有关此问题的许多答案,但无法获得有关如何执行此操作的明确答案。

我的查询如下:

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 ;

提前致谢。

PS一个更通用的答案也会很好,也可能对其他人有帮助

4

1 回答 1

4

在给定表的触发器中,对该表字段的所有引用都必须以NEW.或为前缀OLD.,分别表示更改之后或之前该字段的值。

在您的情况下,您可能希望将新插入的数量添加到现有库存中:使用NEW.Supply_Quantity(不要提及,关键字Product_Supply已经暗示了这一点)。NEW

同样,您当然想NEW.Product_ID在您的条件下使用。

请注意,这NEW在删除触发器中不可用,例如OLD在插入触发器中。

于 2013-06-11T15:01:58.687 回答