关于mysql触发器的介绍

1. 触发器的介绍
触发器是一个特殊的存储过程,不同的是存储过程要用CALL来调用,而触发器不需要使用CALL也不需要手工启动,只要当一个预定义的事件发生的时候,就会被MYSQL自动调用。
触发器可以让你在执行INSERT,UPDATE或者DELETE的时候,执行一些特定的操作,可以在MYSQL中指定实在SQL语句执行前触发还是执行后出发。比如说记录用户每次修改一次数据库的日志。就可以创建触发器在AFTER UPDATE后自动执行插入记录,所以触发器可以简化数据库操作,也可以用来维护数据库数据的一致性,对数据库的维护有着很重要的作用。
2. MYSQL触发器的注意事项
(1)对于每一个表的每一个事件的触发,最多只能定义一个触发器,比如说你不能定义两个AFTER INSERT的触发器,但是可以定义其他的触发点的触发器。
(2)MYSQL只支持“基于行的触发”,也就是说触发器始终是针对一条记录的,如果变更的数据集非常大,效率会很低。
(3)触发器并不一定能够保证更新的原子性。
(i)在更新MYISAM的表时,如果遇到错误是不会回滚的。
(ii)在更新INNODB的表时,由于触发器是在同一事务中完成,所以它们的执行操作是原子的(MYISAM与INNODB之间的区别可以看我的博客中博文有对此的具体介绍)
3. 触发器的具体应用实例
场景:假设系统中有两个表:

班级表 class(班级号 classID, 班内学生数 stuCount)


学生表 student(学号 stuID, 所属班级号 classID)


要创建触发器来使班级表中的班内学生数随着学生的添加自动更新,代码如下:


当我们插入一条学生ID为8,班级ID为2的纪录就可以看到对应班级表中编号为2的学生数增加了一位。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值