我即将在我的数据库中实现一个审计系统,我正在寻找最有效的方法来实现这一目标.
我读过维基并做了我的研究.
有这个例子: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