Mysql 的触发器详解

触发器: 

能监视,,

触发操作,,

四要素:

监视地点

监视事件

触发时间

触发事件



创建触发器的语法

此时要分隔符:delimiter $


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


触发器里after before的区别

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

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

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

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

典型案例:

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

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



案例1:下订单后 库存相应的减少。



创建触发器




案例2:取消订单后  库存相应增加




当删除订单id=2的订单时 猪的库存的会加5




案例三:修改订单的购买数量后  库存变





猜你喜欢

转载自blog.csdn.net/a519640026/article/details/8861181