Postgresql触发器函数监控指定表数据的改变

该文章介绍了如何在PostgreSQL中创建一个触发器函数来监控指定表的数据变化,包括INSERT、UPDATE和DELETE操作。当数据发生变化时,信息会被记录到一个汇总表中,以便跟踪和审计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Postgresql触发器函数监控指定表数据的改变

一、创建存储过程

create or replace function monitor_table_dml() returns trigger
as $monitor_table_dml$
declare
	data_new VARCHAR(255);
	tablename VARCHAR(255);
	action_s VARCHAR(255);
	create_time TIMESTAMP;
begin
--初始化表名
tablename=TG_TABLE_SCHEMA||'.'||TG_TABLE_NAME;
if (TG_OP='DELETE') then
	action_s='Delete';
	data_new=OLD;
elsif (TG_OP='UPDATE') then
	action_s='Update';
	data_new=NEW;
elsif (TG_OP='INSERT') then
	action_s='New';
	data_new=NEW;
end if;
	
-- 更新数据到汇总表(提前创建汇总表factory_abbrev_test_cron,)
<<insert_update>>
loop
	begin
		insert into factory_abbrev_test_cron (
		factory_code,
		factory_name,
		"action",
		create_time)
		values(
		data_new,
		tablename,
		action_s,
		now()
		);
		exit insert_update;
	exception
		when unique_violation then
			-- 什么也不做
	end;
end loop insert_update;
return null;
end;
$monitor_table_dml$ language plpgsql;

二、创建触发器

--自定义名称 monitor_factory_abbrev_test_ddl
--factory_abbrev_test 需要监控的表名称
create trigger monitor_factory_abbrev_test_ddl
after insert or update or delete on factory_abbrev_test
	for each row execute procedure monitor_table_dml();

在这里插入图片描述
参考:
https://www.open-open.com/lib/view/open1427082615949.html
https://blog.csdn.net/yxl_1207/article/details/104551095

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值