簡體   English   中英

SQL Server刪除觸發器不更新表

[英]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的列CustomerIDMasterTable 現在它不會更新該列,我不知道為什么不這樣做。

因為您缺少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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM