Skip to content

MySQL 触发器(Trigger)

MySQL 从 5.02 版本开始支持触发器, 触发器和存储过程一样, 是嵌入到 MySQL 服务器的一段程序;

触发器是由 事件 来触发的某个操作, 这些事件包括 INSERT, UPDATE, 'DELETE' 事件, 指在事件发生之前或之后触发并执行特定 SQL 语句的集合; 触发器可以协助开发人员与数据库交互过程中确保数据的完整性,日志记录和数据校验等;

当对数据表中的数据执行插入、更新和删除操作时, 若需要自动执行一些数据库逻辑时, 可以使用触发器来实现;

类型

现在触发器只支持行级触发, 不支持语句级触发; 使用别名 OLD 和 NEW 来引用触发器中发生变化的记录内容;

  • INSERT 型触发器:NEW 表示将要或已经新增的数据;
  • UPDATE 型触发器:OLD 表示修改之前的数据, NEW 表示将要或已修改后的数据;
  • DELETE 型触发器:OLD 表示将要或者已经删除的数据;

语法

语法结构如下所示:

sql
CREATE TRIGGER 触发器名称 
{BEFORE|AFTER} {INSERT|UPDATE|DELETE} ON 表名 
FOR EACH ROW 
触发器执行的语句块;

说明:

  • 表名:表示触发器监控的对象;
  • BEFORE | AFTER:表示触发时间, 在事件前或事件后触发;
  • INSERT | UPDATE | DELETE:表示触发事件;
  • 触发器执行的语句块:触发器被触发之后执行的 SQL 语句, 可以是单条 SQL 语句, 也可以是 BEGIN...END 结构组成的复合语句块;

参考文章