您的位置:首页 > 数据库 > MySQL

再次认识mysql(六)触发器

2016-09-27 00:09 531 查看
触发器(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$

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql