MySQL数据库总结(9)触发器

触发器: trigger 一触即发

作用:监视某种情况并触发某种操作

能监视: 增.删.改

触发操作: 增.删.改

四要素:

监视地点、监视事件、触发时间、触发事件

这里写图片描述

创建触发器的语法:

Create trigger triggerName
After/before   insert/update/delete   on   表名
For each row #这句话是固定的
Begin
Sql语句  #一句或多句,insert/update/delete范围内
End;

小技巧:修改结束符 delimiter $

删除触发器: Drop trigger 触发器名;

查看触发器: show triggers;

如何在触发器引用行的值

对于insert而言,新增的行 用new来表示,
行中的每一列的值,用new.列名来表示

对于delete来说,原本有一行,后来被删除,
想引用被删除的这一行,用old,来表示old.列名,就可以引用被删除行中的值

对于update来说,
被修改的行,
修改前的数据,用old来表示,old.列名引用被修改之前行中的值
修改后的数据,用new来表示,new.列名引用被修改之后行中的值

这里写图片描述这里写图片描述这里写图片描述这里写图片描述这里写图片描述

触发器里before和after的区别

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

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

应用场合:

1.当向一张表中添加或删除记录时,需要在相关表中进行同步操作。
比如,当一个订单产生时,订单所购的商品的库存量相应减少。

2.当表上某列数据的值与其他表中的数据有联系时。
比如,当某客户进行欠款消费,
可以在生成订单时通过设计触发器判断该客户的累计欠款是否超出了最大限度。

3.当需要对某张表进行跟踪时。
比如,当有新订单产生时,需要及时通知相关人员进行处理,
此时可以在订单表上设计添加触发器加以实现

典型案例:

对于所下订单进行判断,如果订单的数量>5,就认为是恶意订单,
强制把订单的商品数量改成5

  • 监听地点 o表

  • 监听事件 insert

  • 触发事件 update

  • 触发时间 before

  • 目的,触发时间先于监视事件发生,并判断监视事件的数据

Create trigger tg5
before insert on o
For each row
Begin
If new.much > 5 then
   Set new.much = 5;
End if;
Update g set num = num – new.much where id = new.gid;
End$
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值