Mike 发表于 2021-7-31 12:28:24

PostgreSQL触发器

员工表
CREATE TABLE COMPANY(
   ID INT PRIMARY KEY   NOT NULL,
   NAME         TEXT    NOT NULL,
   AGE            INT   NOT NULL,
   ADDRESS      CHAR(50),
   SALARY         REAL
);
审计日志消息
CREATE TABLE AUDIT(
    EMP_ID INT NOT NULL,
    ENTRY_DATE TEXT NOT NULL
);
创建触发器,但插入员工表之后自动插入一条审计消息
CREATE TRIGGER example_trigger AFTER INSERT ON COMPANY
FOR EACH ROW EXECUTE PROCEDURE auditlogfunc();
其中存储过程auditlogfunc如下:
CREATE OR REPLACE FUNCTION auditlogfunc() 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;
使用new.ID表示插入新记录之后的员工ID
使用RETURN NEW返回该触发器类型。


文档来源:51CTO技术博客https://blog.51cto.com/u_4048786/3205928
页: [1]
查看完整版本: PostgreSQL触发器