MySQL触发器基本介绍

Posted 微醺

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL触发器基本介绍相关的知识,希望对你有一定的参考价值。

基本简介:
  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.还可以试用触发器来记录数据变更日志。

以上是关于MySQL触发器基本介绍的主要内容,如果未能解决你的问题,请参考以下文章

mysql触发器的实战(触发器执行失败,sql会回滚吗)

MySQL数据库Day01-MySQL数据库基本概念

linux12 -MYSQL数据库 -->08视图触发器存储过程函数流程控制

MySQL数据库Day01-数据库MySQL的基本概念

mysql 内置功能 触发器介绍

MySQL 进阶 触发器 -- 触发器介绍触发器语法触发器案例