2016-08-26 29 views
3

私は自分のデータベースに監査システムを実装しようとしており、これを行う最も効果的な方法を探しています。監査のためのPostgreSqlイベントトリガー

私はwikiを読んで研究しました。

この例があります:あなたは、各テーブル(ちょっとredudant)のトリガーを作成する必要が記載されている例ではhttps://wiki.postgresql.org/wiki/Audit_trigger_91plus

https://wiki.postgresql.org/wiki/Audit_trigger もこれ。

しかし、Postgres 9.3以降では、テーブルの作成、変更、削除などの特別なイベントに対応できるイベントトリガ機能があります。

最適解は次のようになります。我々はまた、挿入更新イベントトリガーおよび使用にイベントに反応することができる場合、私は疑問に思って

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

:返ししかし

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

すべての監査のためのこの単一のトリガー?

+1

テーブルごとにトリガーを作成する必要がありますが、すべてのトリガーで同じトリガーを使用することができます。 –

答えて

1

これは機能しません。

DDLで _command_endは」イベントは、データベース内の構造変化に呼び出されることを意図していることを意味します。イベントへの完全なリファレンスはここにある:https://www.postgresql.org/docs/current/static/event-trigger-matrix.html

+0

このリストは本当に役に立ちます。うまくいけば、今後、イベントトリガに追加機能を追加することで、素晴らしい監査システムを構築できます。 – Thomas

1

はこれを見ている:

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

これはhstoreのデータ型を利用して、監査システムを実装するためには非常にシンプルでありながら効果的な方法です。私は最近、それを試して、それは完璧に "箱から"働いた。

+0

ありがとう、私はそれを見てみましょう。 – Thomas

関連する問題