使用 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.