最新消息:红方科技年末特惠:.com域名55元、云虚机五折优惠,买3年送2年,更有智能建站套餐等你来取!

mysql触发器

Linux yinhexi 2060浏览 0评论

触发器(trigger)

作用:

可以监视 增删改操作

并触发 增删改操作

创建触发器

(delimiter $)

create  trigger 触发器名称

after/before  insert/update/delete on 表名

for each row

begin

sql 语句—一个或者多个语句,范围在 insert/update/delete内;

end ($)

 

在此需要重新设置结束符号

delimiter $

 

创建第一个简单触发器:

效果

g 表  羊自动减少 3只

 

 

 

发现问题:

 

设置结尾符号语句 不可带  分号

否则设置不成功

解决方案

 

如何在触发器中引用行的值

对于insert 而言 ,新增的行用new来表示。

行中的每一列的值,用 new.列名来表示。

对于delete而言,删去的行用 old来表示。

行中的每一列的值,用old.列名来表示。

对于update而言,更新前的行用 old来表示。old.列名表示更新前的引用。

更新后的行,用new.列名来表示更新后的引用。

 

触发器的删除

drop trigger 触发器名称

触发器的显示

清空表单

truncate 表名

 

购买下单实例

1、创建满足条件的新的触发器

2、执行 insert(下第一笔订单 购买 4 号商品,数量为2)

3、查看o订单

4、g商品表中的 对应id号得商品减少

完整购买案例

 

1、增加一个订单,库存相应减少

2、删除一个订单,库存相应增加

3、修改下单时,商品表数量相应发生变化

 

触发器里 after 和 before的区别

after 是先完成数据的操作,再出发时间,不能对前面的增删改作出影响。

如果用的是 before,可以对数据进行审查。是先于触发再完成增删改,可以审查、判断、即将发生的增删改操作。

 

before应用

创建触发器时即可对插入数据进行影响

create trigger buy

before insert on o

for each row

begin

if new.much >5 then

set new.much=5;

end if;

update g set num = num -new.much where id = new.gid;

end$

 

转载请注明:红方博客 » mysql触发器