目录

【MySQL】触发器

什么是触发器

触发器是与数据表有关的数据库对象。在执行INSERTUPDATEDELETE之前或者之后,可以执行触发器中定义的SQL语句。

在触发器中,分别使用OLDNEW来表示发生变化的记录。

触发器分类

  • INSERT型触发器:

    NEW表示将要或者已经新增的数据。

  • UPDATE型触发器:

    OLD表示修改之前的数据,NEW表示将要或已经修改的数据。

  • DELETE型触发器:

    OLD表示将要或者已经删除的数据。

触发器语法

1. 创建触发器

1
2
3
4
5
6
CREATE TRIGGER trigger_name
BEFORE/AFTER INSERT/UPDATE/DELETE
ON 表名 [FOR EACH ROW]
BEGIN
    语句;
END

说明:

  • FOR EACH ROW表示行级触发器,MySQL只支持行级触发器。

  • 需要使用DELIMITER来设置触发器语句的结束标记。

  • BEGIN/END中的SQL语句不予许返回结果集。

  • 如果语句只有一行,可以省略BEGIN/END关键字。

2. 查看触发器

1
SHOW TRIGGERS;

3. 删除触发器

1
DROP TRIGGER 库名.触发器名;

示例

1. 记录数据的新增

1
2
3
4
5
6
7
8
DELIMITER $

CREATE TRIGGER trigger_test_insert
AFTER INSERT
ON t1 FOR EACH ROW
BEGIn
    INSERT INTO t2 VALUES("新增一行数据", NEW.Id, now());
END$