将一组hstore值作为一组表类型的记录返回

时间:2013-02-18 10:44:52

标签: postgresql hstore

我开始尝试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表的每个记录记录返回一个composit列。

如何将hstore值集合作为一组usr类型的记录返回?

1 个答案:

答案 0 :(得分: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'