PostgreSQL – 创建触发器
要在 PostgreSQL 中创建新触发器,请执行以下步骤:
- 首先,使用 CREATE FUNCTION 语句创建触发器函数。
- 其次,使用CREATE TRIGGER语句将触发器函数绑定到表。
触发函数类似于普通函数。但是,触发器函数不接受任何参数,并且具有触发器类型的返回值。
下面说明了创建触发器函数的语法:
Syntax:
CREATE FUNCTION trigger_function()
RETURNS trigger AS
触发器函数通过一个称为 TriggerData ,其中包含一组局部变量。一旦定义了触发器函数,就可以将其绑定到一个或多个触发器事件,例如INSERT 、 UPDATE和DELETE 。
例子:
我们来看一个创建新触发器的例子。在本例中,我们将创建一个名为 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;
输出: