1

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のレコードのセットとして返す方法についてのアイデアはありますか?

4

1 に答える 1

3

Sergey Konoplev のおかげで、ここで答えが見つかりました。

http://www.postgresql.org/message-id/CAHot5JHzZ1LRHk3vizuTX2-Bw-C54cz-tFL7Cg=99t6LLaCoZA@mail.gmail.com

SELECT
  (populate_record(null::public.usr, logged_actions.row_data)).*
FROM
  audit.logged_actions
WHERE
  audit.logged_actions.table_name = 'usr'
于 2013-02-18T15:09:58.453 に答える