PostgreSQL 触发器介绍

总结:在本教程中,您将了解 PostgreSQL 触发器,为什么使用应该使用触发器,以及何时使用它们。

PostgreSQL 触发器是一个在与表关联的事件发生时自动调用的函数。事件可以是以下任何一种:INSERT、UPDATE、DELETE或TRUNCATE。

触发器是与表关联的特殊用户定义函数。要创建一个新的触发器,首先定义一个触发器函数,然后将该触发器函数绑定到一个表。触发器和用户自定义函数的区别在于触发器在触发事件发生时自动调用。

PostgreSQL 提供两种主要类型的触发器:行级触发器和语句级触发器。两种类型的区别在于触发器被调用的次数和时间。

例如,如果您发出一条 UPDATE 影响 20 行的语句,则行级触发器将被调用 20 次,而语句级触发器将被调用 1 次。

您可以指定是在事件之前还是之后调用触发器。如果触发器在事件之前被调用,它可以跳过当前行的操作,甚至更改正在更新或插入的行。如果在事件之后调用触发器,则所有更改都可用于触发器。

如果数据库被各种应用程序访问,并且您希望在修改表的数据时自动运行的数据库中保持跨功能,则触发器很有用。例如,如果您想保留数据的历史记录而不要求应用程序具有检查每个事件(例如 INSERT 或 )的逻辑 UDPATE 。

您还可以使用触发器来维护复杂的数据完整性规则,除了在数据库级别之外,您无法在其他地方实现这些规则。例如,在 customer 表中添加新行时,还必须在banks 和credits 表中创建其他行。

使用触发器的主要缺点是你必须知道触发器存在并理解它的逻辑才能弄清楚数据更改时的影响。

尽管 PostgreSQL 实现了 SQL 标准,但 PostgreSQL 中的触发器有一些特定的特性:

  • PostgreSQL 触发 TRUNCATE 事件的触发器 。
  • PostgreSQL 允许您在视图上定义语句级触发器。
  • PostgreSQL 要求你定义一个用户自定义函数作为触发器的动作,而 SQL 标准允许你使用任何 SQL 命令。

在本教程中,您了解了 PostgreSQL 触发器、为什么要使用它以及何时可以使用它。