【发布时间】:2018-03-19 19:07:05
【问题描述】:
我看到了几篇关于此的帖子,但在我的情况下仍然存在问题。我有 2 个表 SALES_STOCKS 和 STOCKS。我想当有人从表 SALES_STOCKS(它有一个 NUMBER_STOCKS 列)购买产品时,另一个表 STOCKS 来更新 QUANTITY 列。换句话说,它应该更新 SALES_STOCKS.NUMBER_STOCKS - STOCKS.QUANTITY
这是我的数据库的截图:
这是我用触发器完成的操作:
CREATE TRIGGER trg_updStocks ON SALES_STOCKS
AFTER INSERT AS
BEGIN
IF EXISTS(SELECT * FROM inserted
LEFT OUTER JOIN deleted
ON inserted.NUMBER_STOCKS = deleted.NUMBER_STOCKS
WHERE deleted.NUMBER_STOCKS IS NULL)
UPDATE STOCKS
SET QUANTITY = QUANTITY - NEW.QUANTITY
WHERE ID = New.ID;
END
GO
【问题讨论】:
-
您可能需要考虑一个存储过程,而不是触发器,它在单个事务中执行购买和库存更新。
-
我同意@Andrew 我将在您的应用程序使用的一个 SP 中插入所有内容后创建一个更新命令
标签: sql sql-server triggers database-trigger