数据库

 首页 > 数据库 > MySql > Mysql高级之触发器

Mysql高级之触发器

分享到:
【字体:
导读:
         摘要:触发器是一类特殊的事务 ,可以监视某种数据操作(insertupdatedelete),并触发相关操作(insertupdatedelete)。看以下事件:完成下单与减少库存的逻辑Insert into o (gid,num) values (2,3); &#...

Mysql高级之触发器

触发器是一类特殊的事务 ,可以监视某种数据操作(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


查看哪些触发器:






Mysql高级之触发器
分享到:
Splunk 会议回顾: 大数据的关键是机器学...
Splunk 会议回顾: 大数据的关键是机器学习作者 Jonathan Allen ,译者 张晓鹏  Splunk的用户大会已经接近尾声。三天时间的会议里,共进行了160多个主题研讨,涵盖了从安全、运营到商业智能,甚至包括物联网,会议中一遍又一遍出现相同的中心主题:大数据的关键是机器学习。 存储不再是一个问题。从运行Hadoop兼容节...
(软工视频总结一)让我们把知识连起来
(软工视频总结一)让我们把知识连起来       我们学习的知识都是有关系的,我们不能把一些的新的东西都要放进自己的脑子里,而是将自己知道的知识拿出来,和书上的对应……         我们大多数都参加了《信息系统开发与管理》这一门自考,其实想想,软件工程和信管真的很像,所以说软工对于我们来说并不是一项新的...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……