再次认识mysql(六)触发器

触发器(Trigger)

进行数据库开发时,有 当某些数据变化时,希望其他相关数据改变  的需求

利用触发器 能够完成这样的动作  

触发器是一类特殊的事务,可以监视某种数据操作(insert/update/delete)并触发相关操作(insert/update/delete)

使用触发器不仅可以简化程序,而且可以增加程序的灵活性


常见应用场合

当一个订单产生时,订单所购的商品库存量相应减少  (一张表添加或删除时,需要相关表进行同步操作)

当用户进行欠款消费,订单所购商品是否超过用户最大欠款额度(表中数据与其他表数据有联系时)

当新订单产生,及时通过相关人员进行处理(某张表需要跟踪)


触发器四要素  

监视地点table  监视事件insert/update/delete   触发时间 after/before   触发事件 insert/update/delete


create  trigger t1

after 

insert 

on order

for each row  每一行受到影响  触发器都会执行 称为行级触发器  mysql不支持语句级触发器

begin

update goods  set num=num-2 where gid=1;

end$   

使用delimeter 修改mysql解释器 解释符

对于insert  新插入的行 用new表示  被删除的行的值 用old表示  

对于update 

create trigger t2

after 

insert 

on order

for each row

begin 

update goods set num=num-new.num where gid=new.gid;

查看已有的triggers   show triggers  \G

删除已有的triggers   drop  trigger name


create trigger t3

after 

delete

on order

for  each row

begin 

update goods  set num=num+old.num where gid=old.gid;

end$


create trigger t4

before

insert

on order

for each row

begin

declare rnum int; 定义变量

select num into rnum  from goods where gid=new.gid;

if new.num>rnum then

 set new.much=rnum;

end if

 update goods set num=num-new.num where gid=new.gid;

end$

 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值