使用 MySQL 觸發器的優缺點和限制是什麼?


我們必須瞭解使用 MySQL 觸發器的優缺點和限制,以便我們能夠有效地使用它。

優點

以下是使用 MySQL 觸發器的優點:

  • 資料完整性 - 透過 MySQL 觸發器,我們可以檢查表中資料的完整性。換句話說,MySQL 觸發器是檢查資料完整性的另一種方法。
  • 用於捕獲錯誤 - MySQL 觸發器可以捕獲資料庫層中業務邏輯中的錯誤。
  • 執行計劃任務的替代方法 - 實際上,透過使用 MySQL 觸發器,我們不必等待執行計劃任務,因為觸發器會在修改表中的資料“之前”或“之後”自動呼叫。
  • 審計 - 實際上,MySQL 觸發器對於審計對錶所做的更改非常有用。
  • 防止無效事務 - MySQL 觸發器在防止無效事務方面非常有用。
  • 事件日誌 - MySQL 觸發器可以記錄事件,還可以儲存有關表訪問的資訊。

缺點

以下是使用 MySQL 觸發器的缺點:

  • 無法替代所有驗證 - 實際上,MySQL 觸發器無法替代所有驗證,只能提供擴充套件驗證。
  • 對客戶端應用程式不可見 - 基本上,MySQL 觸發器是在客戶端應用程式不可見的情況下呼叫和執行的,因此很難弄清楚資料庫層中發生了什麼。
  • 給伺服器帶來負載 - 觸發器可能會給資料庫伺服器帶來高負載。
  • 不建議用於高資料速度 - 觸發器不適合用於高資料速度,即每秒事件數量較多的資料。這是因為在高資料速度的情況下,觸發器會一直被觸發。

限制

以下是 MySQL 觸發器的一些限制:

  • 每個時間/事件只能有一個觸發器 - 每個表對於每個時間/事件組合只能有一個觸發器(即:我們不能為同一個表定義兩個 BEFORE INSERT 觸發器)。
  • 不允許使用 RETURN 語句 - 由於觸發器不返回值,因此不允許使用 RETURN 語句。
  • 外部索引鍵限制 - 觸發器不會被外部索引鍵操作啟用。
  • 元資料過時 - 假設,如果將觸發器載入到快取中,則當表元資料更改時不會自動重新載入它。在這種情況下,觸發器可以使用過時的元資料進行操作。
  • 不能使用 'CALL' 語句 - 我們不能在觸發器中使用 CALL 語句。
  • 不能建立臨時表或檢視 - 我們不能為臨時表或檢視建立檢視。
  • 不會被 INFORMATION_SCHEMA 中的更改啟用 - 實際上,觸發器不會被 INFORMATION_SCHEMA 或 performance_schema 表中所做的更改啟用。這是因為這些表是檢視,並且不允許在檢視上使用觸發器。

更新於:2020-06-22

4K+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.