http://wiki.postgresql.org/wiki/Audit_trigger_91plusで説明されているように、Postgresの監査ロギング関数の実験を開始しました。 この関数は、変更されたレコードの新しい値をhstoreフィールドに格納します。
ログに記録されたテーブルのレコードのセットとしてhstoreフィールド値を取得したいと思います。
Postgresのドキュメントによると、hstoreをレコードタイプに変換すると次のようになります。
CREATE TABLE test (col1 integer, col2 text, col3 text);
SELECT * FROM populate_record(null::test, '"col1"=>"456", "col2"=>"zzz"');
これはサインルレコードでは機能しますが、複数のレコードで同じことを行う方法がわかりません。私はこれを試しました:
SELECT
populate_record(null::public.usr, logged_actions.row_data)
FROM
audit.logged_actions
WHERE
audit.logged_actions.table_name = 'usr'
...ただし、usrテーブルのログに記録されたレコードごとに1つの複合列を返します。
ここで、hstore値のセットをタイプusrのレコードのセットとして返す方法についてのアイデアはありますか?