用于审计的PostgreSql事件触发器

时间:2016-08-26 07:29:38

标签: postgresql postgresql-9.5

我即将在我的数据库中实施审计系统,并且正在寻找最有效的方法。

我已经阅读了维基并做了我的研究。

有这个例子: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();

然而,返回:

  

错误:过滤值"插入"不能识别过滤器变量" tag"   SQL状态:42601

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

2 个答案:

答案 0 :(得分:1)

这不会奏效。

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

答案 1 :(得分:1)

看看这个:

https://eager.io/blog/audit-postgres/

这是一种非常简单但有效的方法来实现审计系统,利用hstore数据类型。我最近尝试了它,它完美无缺地“开箱即用”。