要点是:您假设将为插入的每一行调用触发器- 。
将调用 触发器-但是该语句可以一次插入多个行。
在这种情况下,Inserted
触发器内的表将包含 和您的语句:
SELECT @size = productSize FROM inserted
SELECT @color = productColor FROM inserted
SELECT @quantity = productQuantity FROM inserted
SELECT @product = productId FROM inserted
将会失败或碰巧只选择插入的第一行而忽略其余的插入。
你需要重写你的扳机,以应付这一事实Inserted
可以包含 同时
触发器中的代码应如下所示:
UPDATE stock
FROM Inserted i
SET
stock.quantity = quantity - i.quantity
WHERE
stock.size = i.size
AND stock.color = i.color
AND stock.product = i.product