首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 觸發器實戰精要:INSERTED/DELETED 表深度解析

     編輯:關於SqlServer

觸發器是資料庫端業務邏輯復用的利器。本文以化學資料統計自動計算變異數為例,深入剖析 INSERTED、DELETED 虛擬表在 INSERT/UPDATE/DELETE 觸發器中的資料流向,並示範跨表庫存扣減的經典觸發器寫法。

虛擬表運作機制

  • INSERT 觸發器:新資料同時存在於實體表與 INSERTED 表。
  • UPDATE 觸發器:舊資料在 DELETED,新資料在 INSERTED。
  • DELETE 觸發器:被刪資料在 DELETED。

觸發器透過比對兩表內容,判斷影響行數、欄位變更,決定執行動作。

經典範例:訂單明細觸發庫存扣減

CREATE TRIGGER OrdDet_Insert ON [Order Details]
FOR INSERT AS
UPDATE P SET UnitsInStock = P.UnitsInStock - I.Quantity
FROM Products P INNER JOIN INSERTED I ON P.ProductID = I.ProductID;

進階技巧

  • 使用 COLUMNS_UPDATED() 快速判斷特定欄位是否被修改。
  • 觸發器內避免耗時操作(郵件、Web Service),改用 Service Broker 非同步處理。
  • 巢狀觸發器預設開啟,需注意遞迴風險,可用 sp_configure 'nested triggers', 0 關閉。

善用觸發器實現資料完整性與業務自動化,但需謹慎控制複雜度與效能影響。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved