本文概述
- 关于触发器的要点
- PostgreSQL创建触发器
- PostgreSQL触发器的用法
- 使用触发器的优势
关于触发器的要点 在以下情况下执行/调用PostgreSQL:
在尝试操作之前(在检查约束并尝试INSERT, UPDATE或DELETE之前)。
或者, 在操作完成之后(检查约束并且完成INSERT, UPDATE或DELETE之后)。
或者, 代替操作(对于视图进行插入, 更新或删除)
对于该操作修改的每一行, 都将一次调用标记为FOR EACH ROWS的触发器。另一方面, 标记为FOR STATE STATEMENT的触发器仅对任何给定操作执行一次, 无论其修改了多少行。
你可以为同一事件定义相同种类的多个触发器, 但条件是它们将按名称的字母顺序触发。
触发器与其关联的表被删除时, 触发器将被自动删除。
PostgreSQL创建触发器 CREATE TRIGGER语句用于在PostgreSQL表中创建新的触发器。当表发生特定事件(即INSERT, UPDATE和DELETE)时, 将激活该功能。
句法:
CREATETRIGGER trigger_name [BEFORE|AFTER|INSTEAD OF] event_name
ON table_name
[
-- Trigger logic goes here....
];
在这里, event_name可以是对提到的表table_name的INSERT, UPDATE, DELETE和TRUNCATE数据库操作。你可以选择在表名称后指定FOR EACH ROW。
让我们看看在INSERT操作上创建触发器的语法。
CREATETRIGGER trigger_name AFTER INSERT ON column_name
ON table_name
[
-- Trigger logic goes here....
];
让我们以一个示例来演示PostgreSQL创建触发器AFTER INSERT语句。
请参阅以下示例:
在下面的示例中, 我们对插入到COMPANY表中的每个记录进行审计试用。
通过使用以下查询创建一个名为COMPANY的表:
CREATE TABLE COMPANY(
ID INT PRIMARY KEYNOT NULL, NAMETEXTNOT NULL, AGEINTNOT NULL, ADDRESSCHAR(50), SALARYREAL
);
为了保持审计试用状态, 我们将创建一个名为AUDIT的新表, 只要在COMPANY表中有新记录的条目, 就会插入日志消息。
通过使用以下查询, 创建另一个表Audit:
CREATE TABLE AUDIT(
EMP_ID INT NOT NULL, ENTRY_DATE TEXT NOT NULL
);
在公司表上创建触发器之前, 首先创建一个名为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表中插入一些值。
文章图片
同时, 将在AUDIT表中创建两个记录。这些记录是触发的结果, 我们在COMPANY表的AFTER INSERT上创建了这些记录。
文章图片
PostgreSQL触发器的用法 【PostgreSQL触发器】PostgreSQL触发器可用于以下目的:
- 验证输入数据。
- 实施业务规则。
- 为另一个文件上新插入的行生成一个唯一值。
- 写入其他文件以进行审计跟踪。
- 从其他文件中查询以进行交叉引用。
- 访问系统功能。
- 将数据复制到不同的文件以实现数据一致性。
- 它加快了应用程序的开发速度。因为数据库存储触发器, 所以你不必将触发器操作编码到每个数据库应用程序中。
- 全球执行业务规则。定义一次触发器, 然后将其重新用于使用该数据库的任何应用程序。
- 易于维护。如果业务策略发生更改, 则只需要更改相应的触发程序, 而不必更改每个应用程序。
- 改善客户端/服务器环境中的性能。结果返回之前, 所有规则都在服务器中运行。
推荐阅读
- PostgreSQL UPDATE语句
- PostgreSQL视图用法
- PostgreSQL如何使用模式(schema)()
- PostgreSQL教程介绍
- PostgreSQL ORDER BY子句用法
- PostgreSQL语法及其所有SQL命令
- PostgreSQL SELECT查询语句用法
- PostgreSQL右外连接
- 防范安装软件,图文详细说明win7系设置统防范安装程序的办法