来源:自学PHP网 时间:2015-04-16 10:50 作者: 阅读:次
[导读] 触发器是一类特殊的事务 ,可以监视某种数据操作(insert update delete),并触发相关操作(insert update delete)。看以下事件:完成下单与减少库存的逻辑Insert into o (gid,num) values (2,3);...
触发器是一类特殊的事务 ,可以监视某种数据操作(insert/update/delete),并触发相关操作(insert/update/delete)。 看以下事件:
完成下单与减少库存的逻辑 Insert into o (gid,num) values (2,3); // 插入语句 Update g set goods_num = goods_num - 3 where id = 2;// 更新过程 这两个逻辑可以看成一个整体,或者说, insert ---> 引来 update 用触发器可以解决上述问题. 我们可以监视某表的变化,当发生某种变化时,触发某个操作. 创建触发器的语法 Create trigger triggerName After/before insert/update/delete on 表名 For each row #这句话是固定的 Begin Sql语句; # 一句或多句,insert/update/delete范围内 End; 删除触发器的语法: Drop trigger 触发器名 查看触发器 Show triggers ![]() 如何在触发器引用行的值 对于insert而言, 新增的行 用new 来表示, 行中的每一列的值 ,用new.列名来表示. 对于 delete来说, 原本有一行,后来被删除, 想引用被删除的这一行,用old,来表示, old.列名,就可以引用被删行中的值. 对于update来说, 被修改的行, 修改前的数据 ,用 old来表示, old.列名引用被修改之前行中的值 修改后的数据,用new 来表示, new.列名引用被修改之后行中的值 ![]()
触发器里after 和before的区别 After 是先完成数据的增,删,改再触发, 触发的语句晚于监视的增,删,改,无法影响前面的增删改动作. Before是先完成触发,再增删改, 触发的语句先于监视的增,删,改发生,我们有机会判断,修改即将发生的操作. 典型案例: 对于所下订单,进行判断,如果订单的数量 > 5 ,就认为是恶意订单, 强制把所订的商品数量改成5 ![]() 查看哪些触发器: |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com