gpt4 book ai didi

mysql - 如何使用 MySQL 中的 After 触发器从 2 个不同的表中减去列值?

转载 作者:行者123 更新时间:2023-11-29 11:44:06 25 4
gpt4 key购买 nike

我有 2 个表订单和产品,都有一个数量列,其中包含值。我正在尝试使用后触发器从订单表上的数量列中减去产品表上的数量列。触发器将位于订单表上。这是我到目前为止所拥有的:

delimiter //

Create Trigger OQminusPQ
After Insert ON orders
For Each Row

Begin

Select products.Quantity - orders.Quantity

end

//
delimiter ;

错误:我不允许从触发器返回结果集,所以我该怎么办(已解决)!!!!

更新:

DELIMITER //
CREATE TRIGGER OQminusPQ
AFTER INSERT ON orders
FOR EACH ROW
BEGIN
DECLARE PQMOQ INT;
SELECT products.Quantity - orders.Quantity
INTO PQMOQ
FROM products
WHERE products.ProductID = orders.ProductID;

END //
DELIMITER ;

注意:我已经创建了触发器,现在如何显示我的结果?

最佳答案

在行触发器中,您通常不能(并且通常不想)直接查询触发器所附加到的表。 (查找“Mutating Table”问题。)相反,在 INSERT 行触发器中,您可以访问名为 NEW 的伪记录,其中包含新记录< em>就像触发代码退出后一样。。 (在DELETE行触发器中,您拥有伪记录OLD,其中包含触发器触发之前的记录,并且在OLD中>UPDATE 行触发器,您同时拥有 OLDNEW。)

请注意,在 BEFORE 触发器中,您实际上可以在写入记录之前通过更改 NEW 中的值来更改记录;在 AFTER 触发器中,您没有此选项。

你会做这样的事情:

DELIMITER //
CREATE TRIGGER OQminusPQ
AFTER INSERT ON orders
BEFORE EACH ROW
BEGIN
UPDATE products
SET Quantity = Quantity - NEW.Quantity;
END //
DELIMITER ;

关于mysql - 如何使用 MySQL 中的 After 触发器从 2 个不同的表中减去列值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35258194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com