用户登录的PostgreSQL触发器

3

我正在尝试找到一种方式,可以在用户登录Postgres数据库时立即得知。是否有一种定义触发器的方法,以便在用户登录数据库时触发?或者是否有一个表格或系统视图会在任何人登录数据库时更新?


1
不,没有这种东西。唯一会更新的“视图”是 pg_stat_activity,它反映了所有当前连接。但您需要以极高的频率轮询它。 - user330315
2个回答

4

login_hook

这是一个Postgres数据库扩展,用于在用户登录时执行某些代码,类似于Oracle的“after logon trigger”。


3

我认为在 SQL 级别上没有任何东西可以识别登录事件(即你无法查询视图,也无法创建触发器)。

但是,你可以编写一个服务器端模块(用 C 语言),通过 ClientAuthentication_hook 拦截登录事件。该钩子在服务器尝试对用户进行身份验证之后、发送响应之前被调用。

Postgres wiki 上有一个使用 ClientAuthentication_hook 的示例。你还可以在 Postgres 自己的 contrib 模块 中找到几个此钩子的示例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接