標籤:
1. 為什麼要使用觸發器?
觸發器與函數有些類似,都需要聲明,執行。但是觸發器的執行不是由程式調用,也不是由手工啟動,而是由事件來觸發,啟用,從而實現執行。
當觸發DELETE,INSERT,UPDATE語句的時候會觸發啟用觸發器,其他的SQL語句則不會啟用觸發器。
當處理一些商務邏輯,表的資料發生更改時,能夠自動進行一些處理,這時就可以使用觸發器處理資料庫物件。
觸發器的操作包括建立觸發器,查看觸發器以及刪除觸發器。
2. 建立觸發器
2.1 建立有一條執行語句的觸發器
CREATE TRIGGER trigger_name BEFORE | AFTER trigger_event ON table_name FOR EACH ROW trigger_stmt;
樣本如下:
CREATE TRIGGER tri_diary BEFORE INSERT ON t_dept FOR EACH ROW INSERT INTO t_diary VALUES(NULL,‘t_dept‘,NOW());
當向部門表t_dept插入任意一條記錄時,就會在插入操作之前向表t_diary中插入目前時間記錄。
2.2 建立包含多條執行語句的觸發器
CREATE TRIGGER trigger_name BEFORE | AFTER trigger_event ON table_name FOR EACH ROW BEGIN trigger_stmt END;
樣本如下:
DELIMITER $$CREATE TRIGGER tri_diary BEFORE INSERT ON t_dept FOR EACH ROW BEGIN INSERT INTO t_diary VALUES(NULL,‘t_dept‘,NOW());INSERT INTO t_diary VALUES(NULL,‘t_dept‘,NOW());END$$DELIMITER;
上面樣本中,首先通過"DELIMITER $$"語句設定結束符為"$$",然後再關鍵字BEGIN和END之間編寫執行語句列表,最後通過"DELIMITER ;"語句將結束符號還原成預設結束符";"。
3. 查看觸發器
3.1 通過SHOW TRIGGERS語句查看觸發器
SHOW TRIGGERS會顯示所有觸發器的一個列表。
3.2 通過查看系統資料表triggers實現查看觸發器。
4. 刪除觸發器
DROP TRIGGER trigger_name;
mysql之對觸發器的操作