PostgreSQL ALTER TRIGGER

17 Mar 2025 | 5 分钟阅读

在本节中,我们将了解 PostgreSQL ALTER TRIGGER 命令的工作原理,并查看在 PostgreSQL 中从指定表中更改触发器或重命名触发器的示例。

什么是 PostgreSQL ALTER TRIGGER 命令?

PostgreSQL Trigger 中,下一个命令是 Alter Trigger 命令,它用于重命名现有的触发器。

PostgreSQL Alter trigger 命令的语法

以下说明用于更改表中的触发器

在上面的语法中,我们使用了以下参数

参数描述
Trigger_name它用于定义我们需要重命名的触发器名称,并在 ALTER TRIGGER 关键字之后提及。
Table_nametable_name 参数用于定义与触发器连接的表名。它在 ON 关键字之后使用。
New_trigger_name它用于指定触发器的新名称。它写在 RENAME TO 关键字之后。

PostgreSQL ALTER TRIGGER 命令示例

让我们看一个示例来了解 PostgreSQL Alter Trigger 命令的工作原理。

我们正在借助 CREATE 命令创建一个新表,即 Student,并使用 INSERT 命令插入一些值。

步骤 1:创建新表

要在 Organization 数据库中创建一个 Student,我们使用 CREATE 命令。

但是,在创建 Student 表之前,我们将使用 DROP TABLE 命令来检查 Organization 数据库中是否已经存在类似的表。

输出

执行上述命令后,我们将收到以下窗口消息:Student 表不存在。

PostgreSQL ALTER Trigger

Student 表包含各种列,例如 Student_id、Student_name、Scholarship 列,我们使用 Student_id 作为 GENERATED ALWAYS AS IDENTITY 约束

输出

执行上述命令后,我们将收到以下消息:Student 表已成功创建到 Organization 数据库中。

PostgreSQL ALTER Trigger

Step2:创建一个新函数

成功创建 Student 表后,我们将创建一个新函数,如果新奖学金高于旧奖学金的 100%,则会引发异常

输出

执行上述命令后,我们将收到以下消息,该消息显示 check_scholarship() 函数已成功创建到 Organization 数据库中。

PostgreSQL ALTER Trigger

Step3:创建一个新触发器

创建 check_scholarship() 函数后,我们将在更新 触发器之前,在 Student 表上创建一个新触发器,该触发器在更新奖学金之前执行 check_scholarship() 函数。

输出

在实现上述 before_update_scholarship 命令后,我们将获得以下消息窗口,该窗口显示已成功为 Student 表插入了指定的触发器。

PostgreSQL ALTER Trigger

Step4:插入一个新值

一旦 函数和触发器 已成功生成,我们将借助 INSERT 命令在 Student 表中 插入 一个新行

输出

执行上述命令后,我们将获得以下消息窗口,该窗口显示已成功将特定值插入到 Student 表中。

PostgreSQL ALTER Trigger

Step5:更新值

插入新行后,我们将使用以下 UPDATE 命令更新 Student_id 1 的奖学金

输出

在执行上述命令时,触发器已执行并引发错误,提示奖学金涨幅不能这么高。

PostgreSQL ALTER Trigger

Step5:更改触发器命令

为了解决上述错误,我们将使用 ALTER TRIGGER 命令将 before_update_scholarship 触发器重命名为 scholarship_before_update

输出

执行上述命令后,我们将获得以下消息窗口,该窗口显示特定触发器已成功从 before_update_scholarship 触发器重命名为 scholarship_before_update

PostgreSQL ALTER Trigger

查看触发器 SQL shell (PSQL)

我们将按照以下过程在 psql 中查看触发器:

步骤 1

首先,我们将打开本地系统中的 psql,然后连接到要创建表的数据库。

步骤 2

要连接 Organization 数据库,我们将输入以下命令:

输出

执行上述命令后,我们将获得以下输出

PostgreSQL ALTER Trigger

步骤 3

我们现在将输入以下命令以查看与 Organization 数据库中的表链接的所有触发器。

输出

执行上述命令后,我们将获得以下输出,该输出显示 Organization 数据库中存在的现有触发器,即 scholarship_before_update

PostgreSQL ALTER Trigger

注意:在 \dS 命令中,字母 S 为大写,或者如果我们使用 \ds,其中字母 s 为小写,则会发生以下错误

PostgreSQL ALTER Trigger

更改触发器

PostgreSQL 中,不包含 OR REPLACE 命令,该命令为我们提供了更改触发器解释的方法,例如 function,该函数将在执行触发器时实现。

因此,我们可以将这些命令包装在一个事务中,并使用 CREATE TRIGGER 和 DROP TRIGGER 命令。

让我们看一个示例来了解 DROP TRIGGERCREATE TRIGGER 命令如何在事务中工作。

以下命令表示如何将 scholarship_before_update 触发器的 check_scholarship() 函数更改为 validate_scholarship

Step1:开始事务

要启动事务,我们可以使用以下语句

输出

执行上述命令后,我们将获得以下消息窗口,该窗口说明已成功执行指定的命令。

PostgreSQL ALTER Trigger

Step2:使用 DROP trigger 命令

成功启动事务过程后,我们将执行以下 DROP TRIGGER 命令

输出

执行上述命令后,我们将获得以下输出,该输出显示已成功从 Student 表中删除特定触发器。

PostgreSQL ALTER Trigger

Step3:创建一个新触发器

成功删除 scholarship_before_update trigger 后,我们创建一个新的触发器 scholarship_before_udpate,其名称类似,如以下命令所示

输出

执行上述命令后,我们将获得以下消息窗口,该窗口显示已成功为 Student 表插入了特定触发器。

PostgreSQL ALTER Trigger

Step4:提交事务

为了使更改对其他会话(或用户)可见,我们需要借助 COMMIT 命令提交事务,如下所示

输出

执行上述命令后,我们将获得以下消息窗口,该窗口显示已成功为 Student 表提交了事务。

PostgreSQL ALTER Trigger

概述

PostgreSQL ALTER Trigger 部分中,我们学习了以下主题

  • 要重命名触发器,我们使用带有示例的 PostgreSQL Alter Trigger 命令
  • 要将触发器更改为新的触发器,我们使用了 DROP TRIGGER 和 CREATE TRIGGER 命令对。