PostgreSQL如何查询所有使用序列的列及对应关联表
PostgreSQL查询序列关联列及所属表的方法
要得到和pgAdmin 4序列依赖标签页完全一致的结果,可以直接查询PostgreSQL系统目录表,执行以下SQL:
SELECT n.nspname AS 所属schema, t.relname AS 关联表名, a.attname AS 关联列名, s.relname AS 序列名, pg_get_userbyid(s.relowner) AS 序列所有者 FROM pg_class s JOIN pg_depend d ON s.oid = d.objid JOIN pg_class t ON d.refobjid = t.oid JOIN pg_attribute a ON d.refobjid = a.attrelid AND d.refobjsubid = a.attnum JOIN pg_namespace n ON t.relnamespace = n.oid WHERE s.relkind = 'S' -- 仅筛选序列对象 AND d.deptype = 'a' -- 匹配pgAdmin依赖页逻辑,仅筛选列和序列的自动绑定依赖 AND n.nspname NOT IN ('pg_catalog', 'information_schema') -- 排除系统内置schema ORDER BY n.nspname, t.relname, a.attname;
- 若只需查询单个特定序列的依赖,在WHERE条件中补充
s.relname = '目标序列名称'即可,返回结果和pgAdmin中点击对应序列后查看的依赖标签内容完全匹配 - 若需要查询系统内置schema的序列依赖,删除
n.nspname NOT IN ('pg_catalog', 'information_schema')这行条件即可 - 若需要包含手动引用序列的非绑定依赖,可将
d.deptype = 'a'替换为d.deptype IN ('a', 'n')
内容的提问来源于stack exchange,提问作者smg77
相关产品推荐
相关产品推荐

