📜  PostgreSQL – 创建触发器

📅  最后修改于: 2022-05-13 01:57:15.756000             🧑  作者: Mango

PostgreSQL – 创建触发器

要在 PostgreSQL 中创建新触发器,请执行以下步骤:

  • 首先,使用 CREATE FUNCTION 语句创建触发器函数。
  • 其次,使用CREATE TRIGGER语句将触发器函数绑定到表

触发函数类似于普通函数。但是,触发器函数不接受任何参数,并且具有触发器类型的返回值。

下面说明了创建触发器函数的语法:

Syntax:
CREATE FUNCTION trigger_function() 
   RETURNS trigger AS

触发器函数通过一个称为 TriggerData ,其中包含一组局部变量。一旦定义了触发器函数,就可以将其绑定到一个或多个触发器事件,例如INSERT UPDATEDELETE

例子:



我们来看一个创建新触发器的例子。在本例中,我们将创建一个名为 COMPANY的新表,如下所示:

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

当员工姓名更改时,我们将更改记录在名为 AUDIT 的单独表中

CREATE TABLE AUDIT(
   EMP_ID INT NOT NULL,
   ENTRY_DATE TEXT NOT NULL
);

首先,定义一个名为 auditlog() 的新函数:

CREATE OR REPLACE FUNCTION auditlog() RETURNS TRIGGER AS $example_table$
   BEGIN
      INSERT INTO AUDIT(EMP_ID, ENTRY_DATE) VALUES (new.ID, current_timestamp);
      RETURN NEW;
   END;
$example_table$ LANGUAGE plpgsql;

该函数将旧姓插入 AUDIT 包含员工 ID、姓氏和更改时间(如果员工姓氏发生变化)的表。其次,将触发器函数绑定到employees 表。触发器名称是 name change s 。在名称的值之前 列被更新,触发函数被自动调用以记录更改。

CREATE TRIGGER example_trigger AFTER INSERT ON COMPANY
FOR EACH ROW EXECUTE PROCEDURE auditlog();

第三,插入一些样本数据进行测试。我们将两行插入到员工表中。

INSERT INTO COMPANY (ID, NAME, AGE, ADDRESS, SALARY)
VALUES (1, 'Raju', 25, 'New-Delhi', 33000.00 );

要检查员工表,请使用以下查询:

SELECT * FROM COMPANY;

输出: