mysql触发器

触发器
一、定义:由insert、update、delete等事件来触发某种特定操作。触发器触发的执行语句可以有多个。
注:触发器中不能包含start transaction、commit或rollback等关键词,也不能包含call语句。
1、格式:
create trigger 触发器名 berfor|after 触发事件 
	on 表名 for each row 
	执行语句
2、格式:
mysql>DELIMITER &&
mysql>create trigger 触发器名 berfor|after 触发事件 
	 on 表名 for each row 
	 begin
		执行语句;
		执行语句;
	 end
	 &&
mysql>DELIMITER ;
注:for each row表示任何一条记录上的操作满足触发事件都会触发该触发器.MYSQL默认是以“;”作为

结束执行语句。在创建触发器过程中需要用到分号,为了解决这个问题可以用delimiter语句

如:“delimiter &&”,可以将结束符号变成“&&”,当触发器创建完成后可以用命令“delimiter;”

来将结束符号变成分号。一个表在相同触发时间的相同触发事件,只能创建一个触发器。
二、查询触发器
1、语句:show triggers \G,该语句查询指定数据库中所有的触发器
2、查询information_schema数据库下的triggers表:
select * from information_schema.triggers where trigger_name='触发器名' \G
三、删除触发器
drop trigger 触发器名;
四、触发器的应用
1、对于insert而言,新增的行用new来表示
行中的每一列的值用new.列名来表示
create trigger tg2
after insert on o
for each row
begin
update g set num=num-new.much where id=new.gid;
end$
2、对于delete而言,要删除的行用old表示
3、对于update而言,要更新行旧值的用old表示,新值的用new表示
create trigger tg2
after insert on o
for each row
begin
update g set num=num+old.much-new.much where id=old.gid;
end$
4、触发事件先于监视事件发生
create trigger tg5
before insert on o
begin
if new.much >5 then
set new.much =5;
end if;
update g set num=num-new.much where id=new.gid;
end$

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值