觸發器是 mysql 中用于在特定的數據修改事件(插入、更新、刪除)發生時自動執行指定操作的數據庫對象。觸發器的用途包括:數據完整性:確保數據的準確性和一致性。業務規則:實施業務邏輯,如計算派生列或創建關聯數據。數據審計:記錄表中數據的更改,以便審計和跟蹤。自動化任務:自動化重復性操作,如發送通知或更新緩存。
MySQL 觸發器的用途
簡介
觸發器是 MySQL 中一種數據庫對象,用于在特定的事件發生時自動執行指定的操作。事件可能是表中的數據被插入、更新或刪除。
使用觸發器的好處
數據完整性:觸發器可用于執行數據驗證,確保數據的準確性和一致性。
業務規則:觸發器可用于實施業務邏輯,例如計算派生列或自動創建關聯數據。
數據審計:觸發器可用于記錄對表所做的更改,以便進行審計和跟蹤。
自動化任務:觸發器可用于自動化重復性任務,例如在插入新行時發送通知或更新緩存。
觸發器的類型
BEFORE 觸發器:在事件發生之前執行。
AFTER 觸發器:在事件發生之后執行。
INSTEAD OF 觸發器:代替事件執行操作。
創建觸發器
使用 CREATE TRIGGER 語句創建觸發器。該語句需要指定觸發器的以下信息:
名稱
事件(INSERT、UPDATE、DELETE)
表
執行的操作(SQL 語句)
示例
以下觸發器在向表 “customers” 中插入新行時向另一個表 “sales” 中插入一條銷售記錄:
CREATE TRIGGER insert_sale AFTER INSERT ON customers FOR EACH ROW INSERT INTO sales (customer_id, product_id, quantity) VALUES (NEW.customer_id, NEW.product_id, NEW.quantity);
登錄后復制
注意事項
觸發器可能會導致性能問題,因為它們會增加數據庫操作的復雜性。
在觸發器中執行的語句必須是確定性的,即它們不能產生隨機結果或修改數據。
避免在觸發器中使用遞歸調用,因為它可能會導致無限循環。