使用 DB Trigger 的優缺點

2024-05-25

資料庫 Trigger 是資料庫中的一種特殊預存程序,會在特定事件發生時啟動。

Trigger 可以在資料表發生插入、更新或刪除等操作時自動執行,從而實現對資料庫操作的監控和控制。

Trigger 有多種類型,包括

  • DML Trigger(對INSERT、UPDATE或DELETE事件觸發)
  • DDL Trigger(CREATE、ALTER或DROP事件觸發)
  • Logon Trigger(在使用者登入時觸發)

綜合 ChatGPT 的回答如下:

優點:

  • 資料完整性和一致性:當對 table 執行INSERT、UPDATE 或DELETE 操作時, Trigger 會自動執行一些操作來維護資料的完整性
  • 資料驗證:Trigger 可以在資料插入或更新之前對資料進行驗證,確保符合特定條件。
  • 記錄日誌:透過 Trigger,可以輕鬆記錄資料庫操作的變更,有助於追蹤資料的變更歷史。
  • 效能提升:Trigger 可以提高SQL查詢的效能,因為它們不需要每次執行時重新編譯。
  • 減少客戶端程式碼:使用 Trigger 可以減少客戶端程式碼的編寫,節省時間和精力。
  • 易於維護:Trigger相對容易維護,一旦定義好後,可以自動執行所需的操作,無需手動干預 。

缺點:

  • 自動觸發:Trigger 是自動啟動的,使用者無法直接看到其執行過程,可能導致在資料庫層級出現難以偵錯的問題。
  • 增加資料庫伺服器開銷:Trigger 的執行會增加資料庫伺服器的負擔,可能影響系統效能。
  • 限制:Trigger 只能在目前資料庫中創建,但可以引用目前資料庫之外的對象,這可能會增加跨資料庫操作的複雜性。
  • 相同 Trigger 多次執行:在相同CREATE TRIGGER語句中,可以為多個使用者操作(如INSERT和UPDATE)定義相同的 Trigger 操作,可能導致邏輯混亂。
  • 偵錯困難:當存在多層嵌套 Trigger 時,偵錯和故障排除可能變得非常困難,消耗開發時間和資源

另外參考:

ithome 大家在系統中有沒有使用 資料庫的Trigger?

go777 的回覆:

  1. 重要(機敏)資料異動過程的紀錄(用於稽核、日誌記錄及其他用途)。
  2. 用於系統衍生資料產出。
  3. 應用系統間資料介接設計,例: 差勤系統中請假人完成請假流程,紀錄相關請假資料時,利用trigger將代理人及代理時段存入中介資料表,供公文系統使用,以正確完成公文傳送。
  4. 利用DDL trigger 防止未經許可的資料庫管理動作。(1.~3. 視為DML trigger)



其它:

MySQL高级篇-慎用的触发器

將資料填入快取的三種模式

DBTRDATA資料查路

分類:軟體      230
Tag , MySQL , db , trigger ,
留言

留言
top