使用 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 表所做的更改啟用。這是因為這些表是檢視,並且不允許在檢視上使用觸發器。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP