【发布时间】:2021-04-16 04:33:20
【问题描述】:
我有两张桌子:
- 订购和
- 产品。
我希望 Product 表中的特定列 (OnShelfQuantity) 在 Order 表中添加新行时更新。我已经使用下面的查询来实现一个触发器,它将做到这一点。但问题是,当我在 Order 表中插入一行,然后检查 Product 表以查看更改时,我注意到 Product 表已更新 3 次。例如:插入的订单数量 = 10,则只需从 Product_TAB.OnShelfQuantity 中减去 10。但是30被减去。请帮忙!
create trigger dbo.Trigge
ON dbo.Ordertable
AFTER INSERT
AS
BEGIN
update Product_TAB set OnShelfQuantity= Product_TAB.OnShelfQuantity - Ordertable.Quantity
FROM dbo.Product_TAB
INNER JOIN Ordertable
ON Ordertable.ProductID = Product_TAB.ProductID;
END;
【问题讨论】:
-
您使用的是哪个 dbms? (该代码是特定于产品的。)
-
@jarth 它的 SQL 服务器,我正在使用 SSMS 来实现代码。
-
Product 表已经更新了 3 次 ... 那么 Ordertable 对于给定的 ProductID 是否有三行?您可能想阅读触发器中使用的
insertedanddeletedvirtual tables。 -
这个触发器可能最好用索引视图实现
-
您想解决您的问题吗?
标签: sql-server tsql triggers