专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

mysql触发器after和before的区别_数据库

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/3/5 13:47:13       共计:3616 浏览

mysql触发器after和before的区别?

数据库中触发器before与after认识

Before与After区别:

before:(insert、update)可以对new进行修改;after不能对new进行修改,两者都不能修改old数据。

before是先完成触发,再增删改,触发的语句先于监视的增删改,这样就有机会判断,修改即将发生的操作;

after是先完成数据的增删改,再触发,触发的语句晚于监视的增删改操作,无法影响前面的增删改动作;也就是说先插入订单记录,再更新数量;

示例:

商品表g和订单表o和触发器

假设商品表有商品1,数量是10;

在订单表插入一条记录

insert into o(gid,much) values(1,20);

如果创建的触发器是after,则会发现在执行这个语句后,商品1的数量变成了-10。

也就是说触发的语句是在插入订单记录之后才执行的,这个时候是无法判断新插入订单的购买数量。

运用典型案例来区分二者的区别,新建一个触发器:

#监视地点: 商品表o

#监视事件:insert

#触发时间:before

#触发事件:update

案例:当新增一条订单记录时,判断订单的商品数量,如果数量大于10,就默认改为10

create trigger tg6

before insert on o

for each row

begin

if new.much > 10 then

set new.much = 10;

end if;

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

end$

执行完,把之前创建的after触发器删掉,再来插入一条订单记录:

insert into o(gid,much) valus(1,20)$

执行完会发现订单记录的数量变为10,商品1的数量变为0了,就不会出现负数了

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:mysql 无限分类查询,掌握ExcelspssMySQLtableau_数据库 | ·下一条:有excel了要数据库干啥_数据库

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有