GaussDB(DWS)运维 -- SQL操作 -- 查找所有包含主键&唯一索引的表信息

举报
譡里个檔 发表于 2020/12/28 16:37:05 2020/12/28
【摘要】 查询表相关主键约束、唯一约束或者唯一索引

SELECT
    n.nspname AS schemaname, --schema名称
    c1.relname AS tablename, -- 表名
    c2.relname AS indexname, -- 索引名称
    s.conname AS conname,    -- 约束名称
    pg_get_constraintdef(s.oid) AS constraintdef, -- 如果是约束,输出约束定义
    CASE WHEN s.conname IS NULL THEN pg_get_indexdef(x.indexrelid) END AS indexdef -- 如果不是约束,输出索引定义
FROM pg_index x
INNER JOIN pg_class c1 ON c1.oid = x.indrelid
INNER JOIN pg_class c2 ON c2.oid = x.indexrelid
INNER JOIN pg_namespace n ON n.oid = c1.relnamespace
LEFT JOIN pg_constraint s ON s.conrelid = x.indrelid AND s.conindid = x.indexrelid
WHERE (x.indisprimary = true OR x.indisunique = true)
AND c1.relkind = 'r' 
AND x.indrelid >= 16384 AND x.indexrelid > 16384
AND (c1.reloptions IS NULL OR c1.reloptions::text not like '%internal_mask%')  -- 排除内置对象
ORDER BY schemaname, tablename, indexname
;

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。