【发布时间】:2020-07-21 20:15:31
【问题描述】:
我想选择数据库中的所有序列,获取序列的架构、依赖表、表的架构、依赖列。
我尝试了以下查询:
SELECT
ns.nspname AS sequence_schema_name,
s.relname AS sequence_name,
t_ns.nspname AS table_schema_name,
t.relname AS table_name,
a.attname AS column_name,
s.oid,
s.relnamespace,
d.*,
a.*
FROM pg_class s
JOIN pg_namespace ns
ON ns.oid = s.relnamespace
left JOIN pg_depend d --
ON d.objid = s.oid --TO FIX???
AND d.classid = 'pg_class'::regclass --TO FIX???
AND d.refclassid = 'pg_class'::regclass --TO FIX???
left JOIN pg_class t
ON t.oid = d.refobjid --TO FIX???
left JOIN pg_attribute a
ON a.attrelid = d.refobjid
AND a.attnum = d.refobjsubid
left JOIN pg_namespace t_ns
ON t.relnamespace = t_ns.oid
WHERE s.relkind = 'S'
;
很遗憾,此查询无法 100% 运行。查询过滤了一些序列。
我需要它进行进一步处理(在不同 ENV 上恢复数据后,我需要找到最大列值并将序列设置为 MAX+1)。
谁能帮帮我?
【问题讨论】:
标签: postgresql sequence plpgsql dynamic-sql catalog