提要:在本教程中,您将学习PostgreSQL触发器,为什么使用触发器以及何时使用触发器。

PostgreSQL触发器是每当发生与表相关的事件时自动调用的函数。事件可以是以下任何一种:INSERTUPDATEDELETETRUNCATE

触发器是绑定到表的特殊的用户自定义函数。要创建新的触发器,您必须首先定义一个触发器函数,然后将此触发器函数绑定到一个表。触发器和用户自定义函数的不同之处在于触发事件发生时会自动调用。

PostgreSQL 提供了两种主要类型的触发器:行级触发器和语句级触发器。两者之间的差异是触发器被调用的次数以及时机。例如,如果发出影响20行的UPDATE语句,则行级触发器将被调用20次,而语句级触发器将被调用1次。

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

触发器在数据库被各种应用程序访问的情况下非常有用,并且当数据表被修改时,您希望将交叉功能在数据库中保持自动运行。例如,如果要保留数据的历史记录,而不要求应用程序具有检查每个事件(如 INSERTUPDATE)的逻辑。

您还可以使用触发器来维护复杂的数据完整性规则,除了在数据库级别之外,您无法在其他位置实施这些规则。例如,在客户表中添加新行时,还必须在银行和贷项表中创建其他行。

使用触发器的主要缺点是,您必须知道触发器的存在并理解其逻辑,以便在数据更改时找出影响。

PostgreSQL 实现了 SQL 标准,同时 PostgreSQL 中的触发器还具有如下的特定功能:

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