MySql触发器详解
Trigger:扳机、处罚、引发
定义:触发器一类特殊的事务,用于 监视 某种数据操作(insert/update/delete),并触发相关操作(insert/update/delete)
触发器可以增强程序的灵活性。
应用场合:
向表添加或者删除记录时,需要在相关表进行同步操作:下单时,商品库存减少
当某列数据的值与其他表种的数据有关联时:生成订单通过触发器判断累计欠款是否超过最大的额度
对某张表跟踪:当有新订单产生时,需要通过相关人员处理
创建:
触发器创建的四个要素:

监视地点
监视时间
触发时间(after/before)
触发事件
需求演示:
商品表 goods
订单表 order
当下单时,对应的商品的库存量需要进行减少操作
分析:
监视地点: order
监视事件: insert
触发时间:after
触发事件:update goods
创建测试表:
编写触发器:
注意:
要获取插入/修改的新行,需要引用行变量new
要获取删除/修改的旧行,需要引用行变量old
限制购买数量:
for each row:
mysql触发器中的for each row是做什么的?
在oracle触发器中,分为
语句级触发器
行级触发器
如果是行级触发器,update语句如果更新了100行记录,触发器将会被触发100次
如果是语句级触发器,update语句如果更新了100行记录,触发器仍然只会触发1次
mysql目前没有语句级别的触发器,在oracle中如果for each row 不写,则是语句级触发器
语句级触发器的使用场景:1人下单,买了5件商品,修改了五次库存,发送一条发货提醒
最后更新于
这有帮助吗?