觸發器之所以能感知 DML 變更、執行複雜邏輯,核心在於兩個記憶體內邏輯表:inserted 與 deleted。它們由系統自動建立/銷毀,結構與觸發器作用的基礎表完全一致,唯讀、不可直接修改。
SELECT * FROM inserted 檢視。UPDATE 內部拆解為:DELETE 舊列 → INSERT 新列。因此 UPDATE 觸發器同時擁有 deleted(舊值)與 inserted(新值),可比對欄位變化。
@@ROWCOUNT 取得影響列數,配合迴圈或集合式邏輯處理。IF @@ROWCOUNT = 0 RETURN 快速離開無影響情況。觸發器主要耗時在參考其他資料表(磁碟 I/O),而 inserted/deleted 永駐記憶體。設計時應:
深入理解 inserted/deleted 雙表機制、UPDATE 的前像/後像對應、以及 @@ROWCOUNT 的多列處理角色,是編寫正確、高效觸發器的理論基石。