基本简介:
  1.触发器可以让你在执行insert,update,delete语句的时候,执行一些特定的操作。并且可以在MySQL中指定是在sql语句执行前触发还是执行后触发。
  2.触发器没有返回值。
  3.触发器可以减少客户端和服务器之间的通信,所以触发器可以简化应用逻辑,还可以提高性能。
  4.mysql触发器的实现非常简单,所以功能也有限。
注意事项:
  1.对每一个表的每一个事件,最多只能定义一个触发器(即不能再after insert上定义两个触发器);
  2.MySQL只支持“基于行的触发”——也就是说,触发器始终是针对一条记录的,而不是针对整个SQL语句的。如果变更的数据集非常大的话,效率会很低。
触发器的限制:
  1.触发器可以掩盖服务器背后的工作,一个简单的sql语句背后,因为触发器,可能包含很多看不见的工作。例如触发器可能会更新另一个相关表,那么这个触发器会让这条SQL影响的记录数翻一倍。
  2.触发器的问题很难排查,如果某个性能问题和触发器有关,会很难分析和定位。
  3.触发器可能会导致死锁或者锁等待。如果触发器失败,那么原来的SQL语句也会失败。如果没有意识到这其中是触发器在搞鬼,那么很难理解服务器抛出的错误代码是什么意思。
说明:
  1.触发器不一定能保证更新的原子性。
  2.Innodb表上的触发器是在同一个事务中完成的,所以它们执行的操作是原子的,原操作和触发器操作会同时成功或者失败。如果在InnoDB表上建触发器去检查数据的一致性,需要特别小心MVCC,稍不小心,就会得到错误的结果。
  3.触发器非常有用,特别是实现一些约束,系统维护任务,以及更新反范式化数据的时候。
  4.还可以试用触发器来记录数据变更日志。

最新文章

  1. 分布式架构中一致性解决方案——Zookeeper集群搭建
  2. Java(四)
  3. 【状态模式】 State Pattern
  4. SharePoint 2013 创建web应用程序报错"This page can’t be displayed"
  5. LightOj1190 - Sleepwalking(判断点与多边形的位置关系--射线法模板)
  6. ubuntu 下安装 apache php mysql
  7. ViewData ViewBag ViewModel
  8. umount: /home: device is busy
  9. (转载)html dom节点操作(获取/修改/添加或删除)
  10. javaWeb学习总结(8)- JSP标签(6)
  11. centos7下 vsftpd初使用
  12. 一、Django用Eclipse编写一个登录界面
  13. python之定义函数
  14. 两个button之间的间距如何去掉
  15. Gixy Nginx 配置分析工具
  16. CSS选择器种类及介绍
  17. Linux关闭开启防火墙命令
  18. zlib、libzip、 libzippp 库编译(windows + cmake + vs2013)
  19. ALSA声音编程
  20. 数据结构---python---表

热门文章

  1. JulyNovel-React
  2. C# 异常日志记录
  3. Levenshtein字符串距离算法介绍
  4. leetcode-682-Baseball Game
  5. HTML-文本域属性设置
  6. 前端统计图 echarts 实现简单柱状图
  7. wifi测距
  8. thinkpadT480安装archlinux
  9. JavaWeb学习笔记(十五)—— 使用JDBC进行批处理
  10. 【Alpha】Scrum Meeting 0&1