使用 MySQL 触发器的优缺点和限制是什么?


我们必须了解使用 MySQL 触发器的优缺点和限制,以便我们能够有效地使用它。

优点

以下是使用 MySQL 触发器的优点:

  • 数据完整性 - 通过 MySQL 触发器,我们可以检查表中数据的完整性。换句话说,MySQL 触发器是检查数据完整性的另一种方法。
  • 用于捕获错误 - MySQL 触发器可以捕获数据库层中业务逻辑中的错误。
  • 运行计划任务的替代方法 - 实际上,通过使用 MySQL 触发器,我们不必等待运行计划任务,因为触发器会在修改表中的数据“之前”或“之后”自动调用。
  • 审计 - 实际上,MySQL 触发器对于审计对表所做的更改非常有用。
  • 防止无效事务 - MySQL 触发器在防止无效事务方面非常有用。
  • 事件日志 - MySQL 触发器可以记录事件,还可以存储有关表访问的信息。

缺点

以下是使用 MySQL 触发器的缺点:

  • 无法替代所有验证 - 实际上,MySQL 触发器无法替代所有验证,只能提供扩展验证。
  • 对客户端应用程序不可见 - 基本上,MySQL 触发器是在客户端应用程序不可见的情况下调用和执行的,因此很难弄清楚数据库层中发生了什么。
  • 给服务器带来负载 - 触发器可能会给数据库服务器带来高负载。
  • 不建议用于高数据速度 - 触发器不适合用于高数据速度,即每秒事件数量较多的数据。这是因为在高数据速度的情况下,触发器会一直被触发。

限制

以下是 MySQL 触发器的一些限制:

  • 每个时间/事件只能有一个触发器 - 每个表对于每个时间/事件组合只能有一个触发器(即:我们不能为同一个表定义两个 BEFORE INSERT 触发器)。
  • 不允许使用 RETURN 语句 - 由于触发器不返回值,因此不允许使用 RETURN 语句。
  • 外键限制 - 触发器不会被外键操作激活。
  • 元数据过时 - 假设,如果将触发器加载到缓存中,则当表元数据更改时不会自动重新加载它。在这种情况下,触发器可以使用过时的元数据进行操作。
  • 不能使用 'CALL' 语句 - 我们不能在触发器中使用 CALL 语句。
  • 不能创建临时表或视图 - 我们不能为临时表或视图创建视图。
  • 不会被 INFORMATION_SCHEMA 中的更改激活 - 实际上,触发器不会被 INFORMATION_SCHEMA 或 performance_schema 表中所做的更改激活。这是因为这些表是视图,并且不允许在视图上使用触发器。

更新于:2020-06-22

4K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告