您好,UncleToo欢迎您!  为了更好的浏览本站,请使用高版本浏览器
RSS  Tag     设为首页 | 加入收藏
 您所在的位置:首页 > 数据库技术 > MySQL

MySQL教程:触发器中 after 与 before 的区别

作者:未知  来源:转载  日期:2014-10-25 23:01:22
收藏  评论:( 0 )  阅读:435

       关于MySQL数据库中触发器trigger的学习,在本章前面的文章中已经有详细的介绍了,本章MySQL教程中,我们仅仅对具体学习一下触发器中after与before使用与区别。

after:是先完成数据的增删改,然后再触发,触发的语句晚于监视的增删改,无法影响前面的增删改动作;也就是说先插入订单记录,再更新商品数量。当商品数量少于订单数量时造成爆库。

before:先完成触发,在进行增删改,触发语句先于监视的增删改,我们就有机会判断,修改即将发生的操作。


1、使用after触发器:

       当某个订单的数量超过库存的数量时会出现库存为负数。造成所谓的爆库问题。

创建触发器:

CREATE TRIGGER ut_test1
AFTER
INSERT
ON `ord`
FOR EACH ROW
BEGIN
UPDATE goods SET num= num - new.much WHERE goods_id = new.gid;
END

测试:

MySQL教程:触发器中 after 与 before 的区别


2、使用before触发器:

       先触发,在判断处理之后再进行增删改不会,根据库存修改了订单的最大数量。当然我这只是简单的固定了一个值,其实可以用语句获取到动态的库存值。

创建触发器:

CREATE TRIGGER ut_test2
BEFORE
INSERT
ON `ord`
FOR EACH ROW
BEGIN
  IF new.much >26 THEN
     SET new.much = 26;
  END IF;
UPDATE goods SET num= num - new.much WHERE goods_id = new.gid;
END

测试:

MySQL教程:触发器中 after 与 before 的区别


原文地址:http://blog.csdn.net/guugle2010/article/details/40396189




除非特别声明,本站所有PHP教程及其他教程/文章均为原创、翻译或网友投稿,版权均归UncleToo中文网所有, 转载请注明作者及出处。
原文网址:http://www.uncletoo.com/html/mysql/1043.html
读完这篇文章后,你是否有所收获? 分享是一种生活的信念!
  • 0
  • 0
我来说两句
更多>>网友评论