是否可以在postgresql中添加表元数据?

时间:2013-07-30 12:39:34

标签: postgresql

请原谅我的无知,但我想知道是否有办法为PostgreSQL中的表指定元数据,我不希望它作为该表中的字段。例如,如果我想为该表添加一个描述字段,创建时间等......

我知道我可以使用额外的表来做到这一点,但说实话,我宁愿不要这样做。我已经深入研究了官方的PostgreSQL文档,但除了查看information_schema.tables之外什么都没有,我想我不允许修改任何内容。

任何线索?否则,我想我将不得不再创建一些表来处理这个问题。

谢谢!

1 个答案:

答案 0 :(得分:21)

有评论栏:

COMMENT ON TABLE my_table IS 'Yup, it's a table';

在当前版本中,注释字段仅限于单个文本字符串。已经讨论过允许复合类型或记录,但AFAIK没有就任何可行的设计达成一致。

如果您愿意,可以将JSON推送到评论中。这有点脏,因为它会显示为Description\d+输出中的psql列,但它会起作用。

craig=> COMMENT ON TABLE test IS 'Some table';
COMMENT
craig=> \d+
                         List of relations
 Schema |         Name         |   Type   | Owner |    Size    | Description 
--------+----------------------+----------+-------+------------+-------------
 public | test                 | table    | craig | 8192 bytes | Some table

您可以通过以下方式从SQL获取评论:

SELECT pg_catalog.obj_description('test'::regclass, 'pg_class');

也可以在其他对象上添加注释,例如列,数据类型,函数等。

如果这不符合您的需求,您几乎会遇到元数据的边桌。

人们会定期请求表格元数据,例如创建时间等,但没有人倾向于采用可行的实施计划,以及将时间和热情带到最后的时间和热情。在任何情况下,最常见的请求是“上次修改时间”,从性能的角度来看这非常糟糕,并且在多版本并发控制,事务隔离规则等方面难以正确使用。