[英]SQL Server trigger updating other table based on the table with the trigger
[英]SQL Server Delete Trigger not updating Table
我仍在學習SQL,但觸發器存在問題。
我有以下代碼:
CREATE TRIGGER DeleteYTDSales
ON dbo.Sales
AFTER DELETE
AS
BEGIN
UPDATE MasterTable
SET MasterTable.SalesYTD = MasterTable.SalesYTD - Deleted.Amount
FROM Sales
JOIN Deleted ON Sales.CustomerID = Deleted.CustomerID
END
GO
我從銷售表中刪除行后,我需要更新SalesYTD
的列CustomerID
在MasterTable
。 現在它不會更新該列,我不知道為什么不這樣做。
因為您缺少MasterTable
加入條件。 您正在尋找這個
UPDATE m
SET m.SalesYTD = m.SalesYTD - d.Amount
FROM MasterTable m
JOIN Deleted d ON d.CustomerID = m.CustomerID
您的更新真的很奇怪。 我認為您只是打算:
UPDATE mt
SET SalesYTD = mt.SalesYTD - d.Amount
FROM MasterTable mt JOIN
Deleted d
ON mt.CustomerID = d.CustomerID ;
在您的代碼中,您正在更新MasterTable
所有行。 SQL Server使用UPDATE
可能會有些棘手。 我的建議是使用FROM
子句,並將別名始終放在UPDATE
。
您不需要引用Sales
表,因為您需要的所有信息都已deleted
。
您也可以這樣寫:
UPDATE MasterTable
SET SalesYTD = mt.SalesYTD - d.Amount
FROM Deleted d
WHERE MasterTable.CustomerID = d.CustomerID ;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.