我正在使用事件触发器,并且可以记录创建表等操作:
CREATE OR REPLACE FUNCTION UpdateTables() returns event_trigger as $$
begin
-- do stuff
end;
$$ language 'plpgsql';
create event trigger UpdateTables
on ddl_command_end
when tag in ( 'create table', 'alter table', 'drop table' )
execute procedure UpdateTables();
您能否创建一个事件触发器,每当用户连接(会话开始)和用户断开连接(会话结束)时执行该事件触发器。
我正在运行 PostgreSql 9.6beta4。
问题的一部分现在是可行的(即登录触发器)。
最新版本的
pg_tle
可以实现这一点,它将 clientauth
直接挂钩到多种语言(例如 Pl/PgSQL 或 Rust 或 plv8)。 这篇博文(带有代码)解释了如何实现这一点 - .
值得注意的是,
pg_tle
(随 RDS 一起提供)但也是开源的,因此您始终可以将其安装在您自己的 postgres 安装上(EC2 或本地系统)。