Mysql觸發器的定義和使用簡要描述
阿新 • • 發佈:2018-12-26
編輯歷史:
2018.3.14 小賴 文件初始化
1. 觸發器的定義
觸發器(TRIGGER)是MySQL的資料庫物件之一,從5.0.2版本開始支援。該物件與程式語言中的函式非常類似,都需要宣告、執行等。但是觸發器的執行不是由程式呼叫,也不是由手工啟動,而是由事件來觸發、啟用從而實現執行。有點類似DOM中的事件。
2. 觸發器語法
CREATE TRIGGER trigger_name
trigger_time
trigger_event ON tbl_name
FOR EACH ROW
begin
……
end
引數解釋:
trigger_name 為將定義的觸發器名字
trigger_time 觸發器的執行時機(AFTER或者BEFORE)。before就是在sql執行之前,先執行觸發器;after相反。
trigger_event 觸發器的觸發事件(常見的有3種:insert、uodate、delete)
tbl_name 則是觸發器要加在哪張表中
begin end之間寫程式體,如果僅有1條語句,則可以不用begin end,直接將語句寫在後面。
3. 觸發器使用場景(案例)
需求說明:客戶想實現使用者表自動使用rank值排序
create trigger trigger_user_rank_add after insert
on user for each row
begin
declare c int;
set c = (select max(rank) from user );
update user set rank = c + 1 where id = new.id ;
end
4. 檢視觸發器
語法:SHOW TRIGGERS FROM [庫名]
將查出來整個庫下面的所有觸發器:
show triggers from xl_test
5. 刪除觸發器
語法:DROP TRIGGER [庫名].[觸發器名稱]
DROP TRIGGER xl_test.tri_updateInviteCount;