用于审计的PostgreSql事件触发器

我即将在我的数据库中实现一个审计系统,我正在寻找最有效的方法来实现这一目标.

我读过维基并做了我的研究.

有这个例子:https://wiki.postgresql.org/wiki/Audit_trigger
而且这个:https://wiki.postgresql.org/wiki/Audit_trigger_91plus

在列出的示例中,您必须为每个表(有点还原剂)创建一个触发器.

但是对于Postgres 9.3,我们有事件触发器的能力,我们可以对特殊事件做出反应,比如create,alter或drop table.

最佳解决方案是:

create event trigger UpdateTables
   on ddl_command_end
   when tag in ( 'insert ', 'update ')
   execute procedure DoAudit();

然而,返回:

ERROR: filter value “insert ” not recognized for filter variable “tag”
SQL Status:42601

我想知道我们是否也可以对插入做出反应,用事件触发器更新事件并使用这个单一触发器进行所有审计?

最佳答案 这不行.

“on ddl_command_end”表示该事件旨在调用数据库中的结构更改.完整的事件参考在这里:https://www.postgresql.org/docs/current/static/event-trigger-matrix.html

点赞