首页 > 解决方案 > 选择表中所有对象的注释和对象信息

问题描述

我有这个查询可以选择表对象的所有评论(+表本身的评论):

SELECT c.table_schema, c.table_name,pgd.description, pgd.objsubid
FROM pg_catalog.pg_statio_all_tables as st
  inner join pg_catalog.pg_description pgd on (pgd.objoid=st.relid)
  inner join information_schema.tables c on (c.table_schema=st.schemaname and c.table_name=st.relname);

但这仅显示对象的子标识。现在我希望能够知道这到底是什么对象(列、主键、外键……)以及名称是什么。

我怎样才能做到这一点?

标签: postgresql

解决方案


如果您加入information_schema.tables,您将仅获得有关表、视图和外部表的信息。这些可以通过添加table_type来自的列来消除歧义information_schema.tables

要获得有关各种对象的评论,您必须UNION ALL查询每种对象类型。

例如,要获得对函数和过程的评论,您必须加入pg_proc

SELECT f.proname, d.description
FROM pg_description AS d
   JOIN pg_proc AS f ON f.oid = d.objoid
WHERE d.classoid = 'pg_proc'::regclass;

推荐阅读