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

Ale*_*oVK 16 postgresql

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

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

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

谢谢!

Cra*_*ger 24

有评论字段:

COMMENT ON TABLE my_table IS 'Yup, it's a table';
Run Code Online (Sandbox Code Playgroud)

在当前版本中,注释字段仅限于单个文本字符串.已经讨论过允许复合类型或记录,但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
Run Code Online (Sandbox Code Playgroud)

您可以从SQL获取注释:

SELECT pg_catalog.obj_description('test'::regclass, 'pg_class');
Run Code Online (Sandbox Code Playgroud)

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

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

人们经常请求表格元数据,如创建时间等,但没有人倾向于采用可行的实施计划以及将其传递到完成的时间和热情.在任何情况下,最常见的请求是"上次修改时间",从性能的角度来看这是非常可怕的,并且面对多版本并发控制,事务隔离规则等很难正确.