PostgreSQL教程

PostgreSQL 修改触发器

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

什么是PostgreSQL ALTER TRIGGER命令?

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

PostgreSQL Alter触发器命令的语法

以下插图用于更改表中的触发器:
ALTER TRIGGER trigger_name
ON table_name 
RENAME TO new_trigger_name;
在上面的语法中,我们使用了以下参数:
参数 说明
trigger_name 它用于定义我们需要重命名的触发器名称,并在 ALTER TRIGGER 关键字之后提及。
Table_name table_name 参数用于定义与触发器连接的表名。它在 ON 关键字之后使用。
New_trigger_name 它用于指定触发器的新名称。它写在 RENAME TO 关键字之后。

PostgreSQL ALTER TRIGGER命令示例

让我们看一个示例示例,以了解 PostgreSQL Alter Trigger 命令的工作。
我们将在CREATE命令的帮助下以 Student 的形式创建一个新表,并使用插入命令。

第1步: 创建新表

要创建 学生 放入组织数据库,我们使用 CREATE 命令。
但是,在创建 Student 表,我们将使用 DROP TABLE 命令检查 Organization 数据库中是否已经存在类似的表。
DROP TABLE if EXISTS Student;
输出
执行上述命令后,我们将获得以下窗口消息: Student 表不存在。
PostgreSQL ALTER Trigger
学生 表包含各个列,例如 Student_id,Student_name,Scholarship 列,其中我们将 Student_id 用作 GENERATED ALWAYS AS IDENTITY约束 >。
CREATE TABLE Student(
   Student_id int GENERATED ALWAYS AS IDENTITY,
   Student_name VARCHAR(50) NOT null,
   Scholarship decimal(11,2) not null default 0,
   PRIMARY KEY(Student_id)
);
输出
在执行上述命令时,我们将收到以下消息: Student 表具有已成功创建到组织数据库中。
PostgreSQL ALTER Trigger 第2步: 创建新函数
成功创建 Student 表后,我们将创建一个新函数,该函数引发异常如果新奖学金比旧奖学金大100%:
CREATE OR REPLACE FUNCTION check_scholarship()
  RETURNS TRIGGER 
  LANGUAGE plpgsql  
  AS
$
BEGIN
  if (NEW. scholarship-OLD. scholarship) / OLD. scholarship >= 1 THEN
    RAISE 'The scholarship raise cannot that high.';
  END IF;
  return NEW;
END;
$
输出
在执行上述命令时,我们将得到以下消息,该消息显示已创建 check_scholarship()函数成功地进入组织数据库。
PostgreSQL ALTER Trigger

第3步: 创建新触发器

创建 check_scholarship()函数后,我们将在 Student 表,然后执行 check_scholarship()的更新触发 strong>功能,然后再更新奖学金。
CREATE TRIGGER before_update_scholarship
  BEFORE UPDATE
  ON Student
  for EACH ROW
  EXECUTE PROCEDURE check_scholarship ();
输出
执行上面的 before_update_scholarship 命令后,我们将获得以下消息窗口,该窗口显示已插入指定的触发器 Student 表成功。
PostgreSQL ALTER触发器

第4步: 插入新值

一旦成功生成了函数和触发器,我们将插入 INSERT的命令帮助在 Student 表中插入新行:
INSERT INTO Student(Student_name, scholarship)
VALUES('Mike Ross',100000);
输出
执行上述命令后,我们将获得以下消息窗口,显示特定值已成功插入 学生表 。
PostgreSQL ALTER触发器

Step5: 更新值

插入新行后,我们将使用以下 UPDATE 命令更新 Student_id 1的奖学金:
UPDATE Student
SET scholarship = 200000
WHERE Student_id = 1;
输出
在执行上述命令时,触发器被执行并引发错误,表明奖学金的提高不能那么高。
PostgreSQL ALTER触发

第5步: 更改触发命令

要解决上述错误,我们将使用 ALTER TRIGGER 命令将 before_update_scholarship 触发器重命名为 scholarship_before_update 。
ALTER TRIGGER before_update_scholarship
ON Student
RENAME TO scholarship_before_update;
输出
执行上述命令后,我们将获得以下消息窗口,该窗口显示特定触发器已从 before_update_scholarship成功重命名触发 scholarship_before_update 。
PostgreSQL ALTER Trigger

查看触发器SQL Shell(PSQL)

我们将按照以下过程在 psql中查看触发器:
Step1
首先,我们将在本地系统中打开 psql ,然后连接到要创建表的数据库。
Step2
要连接 Organization 数据库,我们将输入以下命令:
postgres=# \c Organization 
输出
执行上述命令后,我们将获得以下输出:
PostgreSQL ALTER Trigger
Step3
我们现在将输入以下命令,以查看与组织数据库。
Organization=# \dS Student
输出
在执行上述命令时,我们将获得以下输出,其中显示了现有触发器,该触发器存在于 scholarship_before_update 组织数据库:
PostgreSQL ALTER Trigger
注意: 在\ dS命令中,字母S在大写字母中,或者如果我们在字母s在小写字母中使用\ ds,则会发生以下错误:
PostgreSQL ALTER Trigger

更改触发器

在 PostgreSQL 中,不包含 OR REPLACE 命令,该命令使我们能够更改触发说明,例如 functio n,将在执行触发时执行。
因此,我们可以将这些命令包装为事务 >,并使用 CREATE TRIGGER和DROP TRIGGER 命令。
让我们看一个示例示例,以了解 > DROP TRIGGER 和 CREATE TRIGGER 命令在事务中有效。
以下命令表示如何将 scholarship_before_update 触发器的 check_scholarship()函数更改为 validate_奖学金:

第一步: 开始交易

要开始交易,我们可以使用以下语句:
BEGIN;
输出
执行上述命令后,我们将获得以下消息窗口,该窗口指示指定的命令已成功实现。
PostgreSQL ALTER Trigger

Step2: 使用DROP触发命令

成功后在开始交易过程时,我们将执行以下 DROP TRIGGER 命令:
DROP TRIGGER if EXISTS scholarship_before_update 
on Student;
输出
执行上述命令后,我们将获得以下输出,该输出显示特定触发器已成功从 删除学生 表。
PostgreSQL ALTER触发器

步骤3: 创建新触发器

成功删除 scholarship_before_update触发器后,我们创建一个具有相似名称的新触发器 scholarship_before_udpate ,如com以下要求:
CREATE TRIGGER scholarship_before_udpate
  BEFORE UPDATE
  ON Student
  for EACH ROW
  EXECUTE PROCEDURE check_scholarship();
输出
执行上述命令后,我们将获得以下消息窗口,该窗口显示已成功为学生 表。
PostgreSQL ALTER Trigger

第4步: 提交事务

要使更改对其他会话(或用户)可见,我们需要在 COMMIT 命令的帮助下提交事务,如图所示下方:
COMMIT;
输出
执行上述命令后,我们将获得以下消息窗口,该窗口显示 事务已成功提交学生 表。
PostgreSQL ALTER触发器

概述

在 PostgreSQL ALTER Trigger 部分中,我们学习了以下主题:
要重命名触发器,我们使用 PostgreSQL Alter Trigger命令作为示例。 要使用新触发器更改触发器,我们使用了一对 DROP TRIGGER和CREATE TRIGGER 命令。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4