我有两张桌子:
tblProducts
-Id int,
-nameProduct varchar(10),
-Quantity int
tblSales
-id
-Idproduct
-Quantity int
Products表与'Sales'表相关。我想要做的是,当添加产品销售时,更新“产品”表的字段“数量”。换句话说,一旦销售完成,减少“产品”表中的产品数量。
我试图通过以下方式实现:
CREATE TRIGGER update_quantity
on Sales
AFTER INSERT
AS
BEGIN
UPDATE Products set Quantity=Quantity - inserted.Quantity WHERE
Sales.id= inserted.id;
END
GO
答案 0 :(得分:0)
男孩谈论细节稀疏。我猜你正在尝试做这样的事情。我建议你不要使用" id"作为列名。当列名从表更改为表时,这很糟糕。如果某些东西是ProductID,它始终是ProductID,而不仅仅是ID。不确定为什么你的销量和产品都有数量。也许那意味着Product表中的QuantityOnHand?
update p
set Quantity = Quantity - i.Quantity
from Products p
join inserted i on i.id = p.productid
- 编辑 -
这是一种确保同一产品ID的多行操作安全的方法。
update p
set Quantity = Quantity - x.NewQuantity
from Products p
cross apply
(
select NewQuantity = sum(i.Quantity)
from inserted i
where i.id = p.productid
) x