我即将在我的数据库中实施审计系统,并且正在寻找最有效的方法。
我已经阅读了维基并做了我的研究。
有这个例子: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
我想知道我们是否也可以使用事件触发器对插入,更新事件做出反应,并使用此单一触发器进行所有审核?
答案 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数据类型。我最近尝试了它,它完美无缺地“开箱即用”。