MySQL Triggers

在 MySQL 中,触发器是一个存储程序,它会自动调用以响应关联表中发生的事件,例如insertupdatedelete 。例如,您可以定义一个在将新行插入表之前自动调用的触发器。

MySQL 支持为响应INSERTUPDATEDELETE事件而调用的触发器。

SQL标准定义了两种类型的触发器:行级触发器和语句级触发器。

  • 对于插入、更新或删除的每一行都会激活行级触发器。例如,如果表插入、更新或删除了 100 行,则针对受影响的 100 行自动调用触发器 100 次。
  • 无论插入、更新或删除多少行,语句级触发器都会为每个事务执行一次。

MySQL 仅支持行级触发器。它不支持语句级触发器。

触发器的优点

  • 触发器提供了另一种检查数据完整性的方法。
  • 触发器处理来自数据库层的错误。
  • 触发器提供了运行计划任务的另一种方法。通过使用触发器,您不必等待计划的事件运行,因为在对表中的数据进行更改之前之后会自动调用触发器。
  • 触发器对于审计表中的数据更改非常有用。

触发器的缺点

  • 触发器只能提供扩展验证,而不是所有验证。对于简单的验证,您可以使用NOT NULLUNIQUECHECKFOREIGN KEY约束。
  • 触发器可能很难排除故障,因为它们在数据库中自动执行,这对客户端应用程序可能不可见。
  • 触发器可能会增加 MySQL 服务器的开销。

管理 MySQL 触发器