PostgreSQL 触发器

17 Mar 2025 | 4 分钟阅读

在本节中,我们将了解 PostgreSQL 触发器的工作原理、为什么我们需要使用触发器以及何时使用它们,并了解 PostgreSQL 触发器的优点和缺点、PostgreSQL 触发器的特性 以及在 PostgreSQL 触发器部分执行的各种命令。

什么是 PostgreSQL 触发器?

触发器是与表关联的特殊 用户定义函数。 如果我们想生成一个新的触发器

  • 首先,我们可以指定一个触发器函数。
  • 其次,将同一个触发器函数绑定到表。

注意:触发器和用户定义函数之间的主要区别是,当任何触发事件发生时,触发器会自动被触发。

PostgreSQL 触发器是一个函数,每当发生与表关联的事件时,它都会自动执行。 该事件可以描述为以下任何一种:INSERT、UPDATE、DELETE 或 TRUNCATE。

触发器的类型

PostgreSQL 中,触发器可以分为两个部分,如下所示

  • 行级触发器
  • 语句级触发器

例如,如果我们发出一个影响 10 行的 UPDATE 命令,行级触发器将被调用 10 次,另一方面,语句级触发器将被调用 1 次

如何在 PostgreSQL 中使用触发器?

  • 触发器也可以通过其创建过程使用 FOR EACH 命令运算符进行标记,并且对于特定操作,只能实现一次相同的触发器。
  • 我们可以在创建过程中使用带有 FOR EACH ROW 运算符的触发器,并且对于操作更改的每一行,这些触发器将被调用一次。

触发器的用法

触发器可用于以下方面

  • 触发器可用于验证输入数据。
  • 触发器还可以实现业务规则。
  • 它可以轻松检索系统函数。
  • 触发器可用于为各种文件中新插入的行创建唯一值。
  • 通过使用触发器,我们可以重复不同文件中的数据以达到数据可靠性。
  • 它用于写入以添加文件以实现审计跟踪的目的。
  • 触发器可用于从其他文件中获取数据以用于交叉引用的目的。

PostgreSQL 触发器中使用的各种命令

在 PostgreSQL 触发器中,我们可以执行以下命令

  • CREATE Trigger
  • ALTER Trigger
  • DROP Trigger
  • ENABLE Trigger
  • DISABLE Trigger

让我们逐一了解它们

  • Create trigger: 在 PostgreSQL 中,CREATE TRIGGER 命令逐步生成我们的第一个触发器。
  • Alter trigger: ALTER TRIGGER 命令用于重命名触发器。
  • Drop trigger: DROP TRIGGER 命令用于定义从表中删除触发器的步骤
  • Enable triggers: 在 PostgreSQL 触发器中,ENABLE TRIGGER 语句允许触发器或与表相关的所有触发器。
  • Disable trigger: DISABLE TRIGGER 用于显示如何禁用触发器或与表链接的所有触发器。

PostgreSQL 触发器的特性

PostgreSQL 触发器的一些重要特性如下

  • PostgreSQL 将为 TRUNCATE 事件执行触发器。
  • PostgreSQL 允许我们在视图上指定语句级触发器。
  • PostgreSQL 需要指定用户定义函数作为触发器的操作,而 SQL 标准允许我们使用任何 SQL 命令。

使用 PostgreSQL 触发器的优势

使用 PostgreSQL 触发器具有以下优势

  • PostgreSQL 触发器用于增强客户端-服务器环境的性能,因为所有指南都在输出检索之前在服务器上执行。
  • 如果多个应用程序检索数据库,PostgreSQL 触发器非常有用。 我们需要在数据库中保留交叉功能,每当更改表的数据时,该功能都会重复执行。
    • 例如,如果我们想保留数据过去的状态,而无需应用程序有理由验证每个事件,例如 UPDATE 或 INSERT。
  • 它将加速应用程序的开发,因为数据库存储触发器,因此我们不必将触发器操作的代码写入每个数据库应用程序。
  • 我们可以定义触发器是在事件之前还是之后被请求
    • 假设触发器是在事件之后请求的,那么所有修改都可以被触发器访问。
    • 或者,如果触发器是在事件之前请求的,则可以修改要插入或更新的行,或者我们可以跳过现有行的操作。
  • 使用 PostgreSQL 触发器的重要性在于,我们可以轻松监视业务策略的更改,我们只需要修改等效的触发器程序,而不是每个应用程序程序。
  • 我们还可以使用触发器来包含复杂的数据完整性规则,我们无法在其他地方执行这些规则,而只能在数据库级别执行。
    • 例如,当向 Employee 表插入新行时,还必须在 Department 和 Jobs 中生成其他行

使用 PostgreSQL 触发器的缺点

使用 PostgreSQL 触发器的主要缺点是,我们必须知道触发器何时发生,了解其逻辑以及修改数据时的影响。

概述

在 PostgreSQL 触发器部分,我们学习了以下主题

  • 我们了解了 PostgreSQL 触发器。
  • 我们了解了触发器的用法以及如何在 PostgreSQL 中使用触发器。
  • 我们了解了 PostgreSQL 触发器的特性
  • 各种 PostgreSQL 命令的简要介绍,例如 CREATE、ALTER、DROP、ENABLE、DISABLE。
  • 使用 PostgreSQL 触发器的优点和缺点