MySQL的深入淺出(七)—— 觸發器

觸發器

觸發器(TRIGGER)是由事件來觸發某個操作。這些事件包括INSERT語句、UPDATE語句和DELETE語句。當數據庫系統執行這些事件時,會激活促發其執行相應的操作。

引用場景:轉賬的時候一方扣錢了,那麼另一方自動加錢


一、創建觸發器

語法如下:

#修改命令結束標識符 delimiter 
delimiter $

create trigger tri_test1
after insert on 表名
for each row
begin 
update 表名 set num=num-new.字段名 where 字段名 =new.字段名;
end$	

delimiter ;

觸發器創建語法的四要素:

要素 作用
監視地點(table) 基於表 ,表示對那張表進行監控
監視事件(insert/update/delete) 用來監視要執行的語句
觸發時間(after/before) 在執行命令之後/之前執行預設好的命令
觸發事件(insert/update/delete) 預設的讓MySQL執行的命令語句,可以使用多句sql捆綁在一起,多句sql之間用分號隔開

二、觸發器的使用

1. insert語句,只有new是合法的。

示例:給order表添加訂單,更新商品庫存

mysql> create trigger tri_1
	-> after insert on `order`
	-> for each row
	-> begin
	-> update commodity set c_num = c_num - new.o_num where c_id = new.o_cid;
	-> end$

2. delete語句,只有old是合法的。

示例:給order表刪除訂單,更新商品庫存

mysql> create trigger tri_2
	-> after delete on `order`
	-> for each row
	-> begin
	-> update commodity set c_num = c_num +old.o_num where c_id = old.o_cid;
	-> end$

3. update語句,new和old可以同時使用

示例:給order表更新訂單,更新商品庫存

mysql> create trigger tri_3
	-> after update on `order`
	-> for each row
	-> begin
	-> update commodity set c_num = c_num +old.o_num-new.o_num where c_id = old.o_cid;
	-> end$

三、查看觸發器

1.使用show triggers\G 查看所有觸發器
2.在數據庫information_schema中通過查看觸發器表,來查看觸發器:使用select * from triggers\G;【當然可以以觸發器名作爲where條件查找數據】
3.查看觸發器創建語句:show create trigger 觸發器名\G;

mysql中,觸發器只能查看,無法修改, 如果要修改,只能刪除原有的觸發器,重新創建觸發器,以達到修改的目的。
使用 drop trigger 觸發器名; 來刪除觸發器


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章