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 触发器名; 来删除触发器


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