MySQL触发器

时间:2019-11-20 08:52:17  来源:igfitidea点击:

在MySQL中,触发器是一种存储程序,用于响应关联表中发生的事件(例如插入,更新或删除)而自动调用。
例如,您可以定义一个触发器,该触发器在将新行插入表中之前自动被调用。

MySQL支持为响应INSERT,UPDATE或DELETE事件而调用的触发器。

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

  • 将为插入,更新或删除的每一行激活一个行级触发器。
    例如,如果一个表中有100行被插入,更新或删除,则该触发器将为受影响的100行自动调用100次。

  • 不管插入,更新或删除多少行,语句级触发器都会为每个事务执行一次。

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

触发器的优点

  • 触发器提供了另一种检查数据完整性的方法。

  • 触发器处理来自数据库层的错误。

  • 触发器提供了运行计划任务的另一种方法。
    使用触发器,您不必等待计划的事件运行,因为在对表中的数据进行更改之前或之后,会自动调用触发器。

  • 触发器对于审核表中的数据更改很有用。

触发器的缺点

  • 触发器只能提供扩展的验证,而不能提供所有验证。
    对于简单的验证,可以使用NOT NULL,UNIQUE,CHECK和FOREIGN KEY约束。

  • 触发器可能很难进行故障排除,因为它们会在数据库中自动执行,而对于客户端应用程序可能不是看不见的。

  • 触发器可能会增加MySQL Server的开销。

管理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允许您为具有相同触发事件和时间的表定义多个触发器。

  • 显示触发器–按特定模式在数据库中列出触发器。