PostgreSQL触发器的创建和使用及优点
DELETE
或 TRUNCATE
语句)。触发器用于验证输入数据、执行业务规则、维护审计跟踪等。插入、更新
或阅读
)。或者在操作完成后(检查约束并完成INSERT
、UPDATE
或❙之后)。或 不是操作(对于任何修改,在 INSERT
、UPDATE
或 DELETE 的情况下,在视图中调用) 标记为 触发 为了所有行
。另一方面,标记为 FOR EACH STATEMENT
的触发器对于任何给定操作仅执行一次,无论它更改了多少行。 您可以为同一事件定义多个相同类型的触发器,但条件按名称字母顺序触发。 当触发器所连接的表被删除时,触发器会自动删除。 PostgreSQL 创建触发器
CREATE TRIGGER
语句用于在 PostgreSQL 表中创建新触发器。当表上发生特定事件(即INSERT
、UPDATE
和 DELETE)时,它会被激活。 语法
CREATE TRIGGER trigger_name [BEFORE|AFTER|INSTEAD OF] event_name
ON table_name
[
-- Trigger logic goes here....
];
SQL 这里,Event_name
可以 对指定表 进行 、DELETE
和 TRUNCATE 数据库操作表名
。您可以选择在表名称后指定 FOR EACH ROW
。 让我们看看如何在操作INSERT
中创建触发器的语法。
CREATE TRIGGER trigger_name AFTER INSERT ON column_name
ON table_name
[
-- Trigger logic goes here....
];
SQL触发器示例
以下示例显示 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
);
SQL为了保存审核/审查,我们创建一个新表❀ITD-name❀ ,日志消息为进入当表 COMPANY
中有新记录的条目时。
使用以下查询创建另一个表 Audit
:
CREATE TABLE AUDIT(
EMP_ID INT NOT NULL,
ENTRY_DATE TEXT NOT NULL
);
SQL 在 COM 上创建触发器之前NY❀ 首先创建一个名为 audit 的触发器logfunc() 函数/过程。
归档以下查询语句来创建函数/过程:
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;
SQlta 执行结果如下 -

Nonce 在公司上触发 查询语句:D '执行结果CREATE TRIGGER example_trigger AFTER INSERT ON COMPANY
FOR EACH ROW EXECUTE PROCEDURE auditlogfunc();
SQL如下 -

向❀❀执行表添加一些数据记录。离子。
INSERT INTO COMPANY VALUES(1, '小米科技', 8, '北京市朝阳区', 9999);
INSERT INTO COMPANY VALUES(2, '京东中科', 6, '广州市天河区', 8999);
SQL执行完上面的insert语句后,我们看看AUDIT
表是否自动插入了两条审计记录。

可以肯定的是,输入数据后触发器将触发,PostgreSQL将自动在AUDIT
表中创建/插入两条记录。这些记录是触发器的结果,因为我们在 COMPANY
表上的 AFTER INSERT 上创建了这些记录。 PostgreSQL 触发器的使用
PostgreSQL 触发器可用于以下目的:
- 验证输入数据。
- 介绍业务规则。
- 为不同文件中新插入的行生成唯一值。
- 写入附加文件以进行审计跟踪。
- 索取其他文件以供交叉参考。
- 访问系统功能。
- 将数据复制到多个文件以保证数据一致性。
使用触发器的好处
- 它提高了应用程序开发的速度。由于数据库存储了触发器,因此您不需要在每个数据库应用程序中都触发。
- 全球执行业务规则。定义一次触发器并在每个使用数据库的应用程序中使用它们。
- 更易于维护当业务策略发生变化时,只需更改相应的触发器,而不需要更改每个应用程序。
- 提高客户端/服务器环境的性能。所有规则在返回结果之前都在服务器上运行。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。