0
我在写更新订单价格的触发器时遇到问题。多个行上的sql触发器
我有一个包含order_id和goods_id对的表。 下面是我用于删除的代码片段。其余的基本上是一样的。
CREATE TRIGGER [update_price]
ON [dbo].[Goods-Order]
AFTER INSERT, DELETE, UPDATE
AS
BEGIN
if (exists(select * from deleted))
UPDATE dbo.Order set order_price -= (input_amount * (select goods_price from dbo.Goods where dbo.Goods.goods_id = deleted.goods_id)) from deleted where dbo.Orde.order_id = deleted.order_id
的问题是,如果在订单商品表具有相同的order_id多行,更新语句将只处理其中的一个。
我见过一堆堆栈溢出的类似示例,但是,它们有点不同,不适用于我的情况。
我知道有一个解决方案使用游标遍历删除表中的所有行,但我想避免这种方法。可能吗?
不幸对于具有相同order_id的多行,它仍然不起作用。它只根据其中的一个进行更新。 –