Mysql高级之触发器

系统 1746 0
原文: Mysql高级之触发器

触发器是一类特殊的事务 ,可以监视某种数据操作(insert/update/delete),并触发相关操作(insert/update/delete)。

Mysql高级之触发器

看以下事件:

Mysql高级之触发器

完成下单与减少库存的逻辑

Insert into o (gid,num) values (2,3);  //  插入语句

Update g set goods_num = goods_num - 3 where id = 2;//  更新过程

 

这两个逻辑可以看成一个整体 , 或者说 , insert --->  引来  update

 

 

用触发器可以解决上述问题 .

我们可以监视某表的变化 , 当发生某种变化时 , 触发某个操作 .

Mysql高级之触发器

创建触发器的语法

Create trigger triggerName 

After/before   insert/update/delete   on  表名

For each row # 这句话是固定的

Begin

Sql 语句 ;  #  一句或多句 ,insert/update/delete 范围内

End;

 

删除触发器的语法 :

Drop trigger  触发器名

 

查看触发器

Show triggers

Mysql高级之触发器

如何在触发器引用行的值

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

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

 

对于  delete 来说 原本有一行 , 后来被删除 ,

想引用被删除的这一行 , old, 来表示 ,   old. 列名 , 就可以引用被删行中的值 .

 

对于 update 来说 ,

被修改的行

修改前的数据  , 用  old 来表示 old. 列名 引用被修改之前行中的值

修改后的数据 , new  来表示 new. 列名 引用被修改之后行中的值

Mysql高级之触发器

Mysql高级之触发器

触发器里 after  before 的区别

After  是先完成数据的增 , , 改再触发 ,

触发的语句晚于监视的增 , , , 无法影响前面的增删改动作 .

 

Before 是先完成触发 , 再增删改 ,

触发的语句先于监视的增 , , 改发生 , 我们有机会判断 , 修改即将发生的操作 .

 

 

典型案例 :

对于所下订单 , 进行判断 , 如果订单的数量  > 5 , 就认为是恶意订单 ,

强制把所订的商品数量改成 5

Mysql高级之触发器

查看哪些触发器:

Mysql高级之触发器

Mysql高级之触发器




Mysql高级之触发器


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论