本節透過大量實例,展示三類 DML 觸發器的寫法與關鍵技巧,包含檢查欄位變更的 IF UPDATE()、COLUMNS_UPDATED(),以及巢狀觸發器的級聯應用。
當資料插入時,inserted 邏輯表保存新增列的副本。觸發器可透過查詢 inserted 進行驗證、同步其他表、記錄稽核等。

UPDATE 觸發器同時涉及 deleted(舊值)與 inserted(新值)兩個邏輯表。分為兩類:
IF UPDATE(column) 或 IF (COLUMNS_UPDATED()) 位元遮罩判斷。

注意:執行上述範例前,必須先移除 title 資料表相關的主外鍵關聯,否則觸發器無法觸發。

刪除操作將被刪除列存入 deleted 邏輯表。觸發器可在此階段攔截刪除、轉存刪除記錄、執行級聯清理等。
觸發器執行的 DML 若觸發另一資料表的觸發器,即形成巢狀。SQL Server 支援最多 32 層。可透過 sp_configure 'nested triggers' 停用。

注意:執行巢狀範例前,需移除 sales 資料表的主外鍵關聯。
inserted/deleted 邏輯表比對新舊值。IF UPDATE(col) 單一欄位檢查;COLUMNS_UPDATED() 多欄位位元遮罩檢查。TRIGGER_NESTLEVEL() 守衛條件。