定義
觸發器 (Triggers) 是一種特殊類型的儲存在資料庫中的程序,當特定的資料庫事件(如插入、更新或刪除操作)發生時,自動執行預定義的動作。觸發器是在某個資料表或視圖上定義的,可以用來自動執行業務規則、數據完整性檢查和其他邏輯操作。
特點
- 自動執行:一旦設置,觸發器會在指定事件發生時自動運行,而不需要顯式調用。
- 基於事件:觸發器是基於資料庫事件設計的,可以針對 INSERT、UPDATE 和 DELETE 操作設置。
- 關聯性:通常與特定的資料表或視圖相關聯。
- 即時性:觸發器在事件發生時立即執行,確保即時的資料處理和約束檢查。
主要應用場景
- 數據完整性:確保資料的一致性和完整性。例如,當插入新紀錄時,觸發器可以自動檢查約束條件是否滿足。
- 自動審計:自動記錄資料變更歷史。例如,當資料表中的紀錄被更新或刪除時,觸發器可以將變更記錄到審計表中。
- 業務規則實現:實現複雜的業務邏輯。例如,當插入一筆新訂單時,觸發器可以自動更新庫存數量。
- 同步處理:在多個表之間保持數據同步。例如,當主表中的數據改變時,觸發器可以自動更新相關的子表。
觸發器的類型
- 行級觸發器 (Row-level Triggers):
- 針對每一行的變更執行一次。通常用於需要逐行處理的邏輯。
- 語句級觸發器 (Statement-level Triggers):
- 針對整個語句執行一次,而不論該語句影響多少行。適用於需要在操作前後執行一次的情境。
觸發器的事件時機
- 之前觸發 (BEFORE Triggers):
- 在事件發生之前執行。例如,在插入一條新紀錄之前檢查資料的有效性。
- 之後觸發 (AFTER Triggers):
- 在事件發生之後執行。例如,更新資料之後記錄審計日志。