postgresql触发器记录更新日志

1. 创建日志表

CREATE TABLE t_audit_log(
	id serial,
	ip varchar,   				-- 修改人所对应ip
	username text, 				-- 修改人 
	event_time_utc timestamp, 	-- 修改时间
	table_name text,		 	-- 修改的表名 
	operation text, 			-- INSERT, UPDATE, DELETE or TRUNCATE 
	before_value json, 			-- 修改前的数据
	after_value json 			-- 修改后的数据
);

2. 创建获取ip的函数

CREATE OR REPLACE FUNCTION get_client_ip() RETURNS text AS $$
DECLARE
    client_ip text;
BEGIN
    SELECT inet_client_addr() INTO client_ip;
    RETURN client_ip;
END;
$$ LANGUAGE plpgsql;

3.创建触发器函数

CREATE OR REPLACE FUNCTION audit_trigger() RETURNS trigger AS $$ 
  DECLARE 
   old_row json := NULL; 
   new_row json := NULL; 
  BEGIN
   IF TG_OP IN ('UPDATE','DELETE') 
   THEN
     old_row = row_to_json(OLD);
   END IF; 
   IF TG_OP IN ('INSERT','UPDATE') 
   THEN
     new_row = row_to_json(NEW);
     END IF; 
   INSERT INTO t_audit_log(ip,username, event_time_utc, table_name, operation, before_value, after_value ) 
   VALUES (get_client_ip(),session_user, current_timestamp AT TIME ZONE 'UTC', TG_TABLE_SCHEMA || '.' || TG_TABLE_NAME, TG_OP, old_row, new_row ); 
   RETURN NEW; 
   END;
$$ LANGUAGE plpgsql; 

4. 创建触发器

CREATE TRIGGER insert_customer_trigger -- 触发器名称
BEFORE INSERT ON table_name --表名
FOR EACH ROW --触发时机,这里按行
EXECUTE FUNCTION insert_customer_if_not_exists(); -- 执行的函数

相关推荐

  1. postgresql触发器记录更新

    2023-12-10 15:08:02       34 阅读
  2. PHP记录

    2023-12-10 15:08:02       15 阅读
  3. 微信小程序更新

    2023-12-10 15:08:02       9 阅读
  4. flutter记录报错

    2023-12-10 15:08:02       43 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-10 15:08:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-10 15:08:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-10 15:08:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-10 15:08:02       20 阅读

热门阅读

  1. ClickHouse为何如此之快

    2023-12-10 15:08:02       38 阅读
  2. qt:使用信号槽机制传参

    2023-12-10 15:08:02       41 阅读
  3. 数据结构之内部排序

    2023-12-10 15:08:02       32 阅读
  4. pandas常见问题汇总

    2023-12-10 15:08:02       41 阅读
  5. 使用python实现断点续传

    2023-12-10 15:08:02       34 阅读
  6. 特权FPGA学习笔记

    2023-12-10 15:08:02       36 阅读
  7. s3-dist-cp 介绍教程示例使用方法

    2023-12-10 15:08:02       32 阅读