在 MySQL 中,触发器是一个存储程序,它会自动调用以响应关联表中发生的事件,例如insert 、 update或delete 。例如,您可以定义一个在将新行插入表之前自动调用的触发器。
MySQL 支持为响应INSERT
、 UPDATE
或DELETE
事件而调用的触发器。
SQL标准定义了两种类型的触发器:行级触发器和语句级触发器。
- 对于插入、更新或删除的每一行都会激活行级触发器。例如,如果表插入、更新或删除了 100 行,则针对受影响的 100 行自动调用触发器 100 次。
- 无论插入、更新或删除多少行,语句级触发器都会为每个事务执行一次。
MySQL 仅支持行级触发器。它不支持语句级触发器。

触发器的优点
- 触发器提供了另一种检查数据完整性的方法。
- 触发器处理来自数据库层的错误。
- 触发器提供了运行计划任务的另一种方法。通过使用触发器,您不必等待计划的事件运行,因为在对表中的数据进行更改之前或之后会自动调用触发器。
- 触发器对于审计表中的数据更改非常有用。
触发器的缺点
- 触发器只能提供扩展验证,而不是所有验证。对于简单的验证,您可以使用
NOT NULL
、UNIQUE
、CHECK
和FOREIGN KEY
约束。 - 触发器可能很难排除故障,因为它们在数据库中自动执行,这对客户端应用程序可能不可见。
- 触发器可能会增加 MySQL 服务器的开销。
管理 MySQL 触发器
- 创建触发器– 描述如何在 MySQL 中创建触发器的步骤。
- 删除触发器– 向您展示如何删除触发器。
- 创建 BEFORE INSERT 触发器– 展示如何创建
BEFORE INSERT
触发器来维护另一个表的汇总表。 - 创建 AFTER INSERT 触发器– 描述如何创建
AFTER INSERT
触发器,以便在将数据插入另一个表后将数据插入到一个表中。 - 创建 BEFORE UPDATE 触发器– 了解如何创建
BEFORE UPDATE
触发器,在数据更新到表之前验证数据。 - 创建 AFTER UPDATE 触发器– 展示如何创建
AFTER UPDATE
触发器来记录表中数据的更改。 - 创建 BEFORE DELETE 触发器– 展示如何创建
BEFORE DELETE
触发器。 - 创建 AFTER DELETE 触发器– 描述如何创建
AFTER DELETE
触发器。 - 为具有相同触发事件和时间的表创建多个触发器– MySQL 8.0 允许您为具有相同触发事件和时间的表定义多个触发器。
- 显示触发器– 按特定模式列出数据库、表中的触发器。