博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL触发器 trigger之after与before区分
阅读量:6669 次
发布时间:2019-06-25

本文共 609 字,大约阅读时间需要 2 分钟。

after:是先完毕数据的增删改。然后再触发,触发的语句晚于监视的增删改。无法影响前面的增删修改作;也就是说先插入订单记录,再更新商品数量。当商品数量少于订单数量时造成爆库。
before:先完毕触发。在进行增删改。触发语句先于监视的增删改。我们就有机会推断。改动即将发生的操作。

案例操作:
触发器
使用after
当某个订单的数量超过库存的数量时会出现库存为负数。

造成所谓的爆库问题。

#创建触发器test4CREATE TRIGGER test4AFTERINSERTON `ord`FOR EACH ROWBEGINUPDATE goods SET num= num - new.much WHERE goods_id = new.gid;END$$
触发器
使用before
先触发,在推断处理之后再进行增删改不会,依据库存改动了订单的最大数量。

当然我这仅仅是简单的固定了一个值,事实上能够用语句获取到动态的库存值。

#创建触发器test5CREATE TRIGGER test5BEFOREINSERTON `ord`FOR EACH ROWBEGIN  IF new.much >26 THEN     SET new.much = 26;  END IF;UPDATE goods SET num= num - new.much WHERE goods_id = new.gid;END$$
你可能感兴趣的文章
怎样区分直连串口线和交叉串口线?
查看>>
ThinkPHP3.1快速入门(13)自动完成
查看>>
搭建Android开发环境之——Android4.0.3, 4.1, 4.2, 4.3, 4.x,及升级 ADT(22.0.5)和SDK(22.x)...
查看>>
【Javascript】—— 1 方法function的高级特性
查看>>
ios iphone 将log在终端输出
查看>>
Asp.net mvc 5 CRUD代码自动生成工具- vs.net 2013 Saffolding功能扩展
查看>>
优秀团队建设--美国式团队(ppt)
查看>>
tail 命令(转)
查看>>
DevExpress学习03——label控件的背景色问题
查看>>
linux文件分割(将大的日志文件分割成小的)
查看>>
AutoMapper(二)
查看>>
OpenGL ES 3.0之VertexAttributes,Vertex Arrays,and Buffer Objects(九)
查看>>
as3随机数
查看>>
四种方案解决ScrollView嵌套ListView问题
查看>>
[IIS] IIS Framework "aspnet_regiis.exe" 注册
查看>>
乘法逆元模板
查看>>
为什么要优化你的代码?
查看>>
【杂文】2015年度总结
查看>>
25个可遇不可求的jQuery插件
查看>>
【LeetCode】【Python题解】Single Number & Maximum Depth of Binary Tree
查看>>