1

我开始试验 Postgres 的审计日志功能,如http://wiki.postgresql.org/wiki/Audit_trigger_91plus中所述。 此功能将更改记录的新值存储在 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 表的每个记录记录返回一个复合列。

有什么想法可以在这里将 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 回答