PostgreSQL中触发器的使用_postgresql 触发器 回调接口

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

CREATE  TRIGGER trigger_name [BEFORE|AFTER|INSTEAD OF] event_name  
ON table_name  
[  
 -- Trigger logic goes here....  
];

在这里,event_name可以是INSERT,UPDATE,DELETE和TRUNCATE数据库操作上提到的表table_name。 您可以选择在表名后指定FOR EACH ROW。

下面来看看看如何在INSERT操作中创建触发器的语法。

CREATE  TRIGGER trigger_name AFTER INSERT ON column_name  
ON table_name  
[  
 -- Trigger logic goes here....  
];

触发器例子

下面举个例子来演示PostgreSQL在INSERT语句之后创建触发器。在以下示例中,我们对每个记录插入到COMPANY表中进行审核(审计)。

使用以下查询创建一个名为COMPANY的表:

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

为了保存审计/审核,我们将创建一个名为AUDIT的新表,只要在COMPANY表中有一个新记录的条目,就会插入日志消息。

使用以下查询语句创建另一个表Audit:

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

在COMPANY表上创建触发器之前,首先创建一个名为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;

执行结果略;

现在通过使用以下查询语句在COMPANY表上创建一个触发器:

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

执行结果略;

向COMPANY表中插入一些数据记录,以验证触发器执行情况:

INSERT INTO COMPANY VALUES(1, '小米科技', 8, '北京市朝阳区', 9999);
INSERT INTO COMPANY VALUES(2, '京东中科', 6, '广州市天河区', 8999);

在执行上面两条插入语句后,现我们来看AUDIT表是否有自动插入两条审核记录。

查看结果略;

可以确定的是在插入数据后触发了触发器,PostgreSQL也自动向AUDIT表中创建/插入两个记录。 这些记录是触发的结果,这是因为我们在AFTER INSERT on COMPANY表上创建了这些记录。

PostgreSQL触发器的使用

PostgreSQL触发器可用于以下目的:
验证输入数据。
执行业务规则。
为不同文件中新插入的行生成唯一值。
写入其他文件以进行审计跟踪。
从其他文件查询交叉引用目的。
访问系统函数。
将数据复制到不同的文件以实现数据一致性。

使用触发器的优点

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

**

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值