觸發器是針對資料表的 INSERT、UPDATE、DELETE 動作自動執行的預存程序,常用於強制商務規則、維護資料完整性、稽核追蹤。
inserted 邏輯資料表中。inserted 保存已插入資料列的複本,可供觸發器檢查、比對、參考交易記錄產生的資料變更。inserted 決定是否執行後續動作。USE Northwind;
CREATE TRIGGER OrdDet_Insert
ON [Order Details]
FOR INSERT
AS
UPDATE P SET UnitsInStock = P.UnitsInStock - I.Quantity
FROM Products AS P INNER JOIN Inserted AS I
ON P.ProductID = I.ProductID;
deleted 邏輯資料表。deleted 儲存於記憶體高速緩存,不佔用磁碟空間。USE Northwind;
CREATE TRIGGER Category_Delete
ON Categories
FOR DELETE
AS
UPDATE P SET Discontinued = 1
FROM Products AS P INNER JOIN deleted AS d
ON P.CategoryID = d.CategoryID;
UPDATE 可視為兩步驟:先刪除舊資料 (產生 deleted),再插入新資料 (產生 inserted)。觸發器可同時存取兩個邏輯資料表比對前後值。
IF UPDATE(column_name) 判斷特定欄位是否被修改,減少不必要處理。sp_configure 'nested triggers', 0 可停用。