21

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

我知道我可以使用额外的表格来做到这一点,但老实说,我宁愿不这样做。我已经在官方 PostgreSQL 文档中进行了挖掘,但除了查看 information_schema.tables 之外什么都没有,我想我不允许修改任何东西。

有什么线索吗?否则,我想我将不得不创建更多的表来处理这个问题。

谢谢!

4

1 回答 1

32

有评论区:

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');

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

如果这不符合您的需求,您几乎会被一张用于元数据的边桌所困。

人们经常要求创建时间等表元数据,但没有人倾向于制定可行的实施计划以及将其完成的时间和热情。无论如何,最常见的请求是“最后修改时间”,从性能的角度来看,这是相当可怕的,面对多版本并发控制、事务隔离规则等,很难做到正确。

于 2013-07-30T12:44:49.047 回答