如何识别PostgreSQL中表使用的序列及表与序列的映射关系
识别PostgreSQL中指定表的序列及映射关系
查询全量序列信息
若要查看数据库内所有序列的基础信息(含所属模式、数据类型等),执行以下SQL:
SELECT * FROM information_schema.sequences;
精准定位指定表的关联序列
如果需要查询特定表绑定的序列,可使用以下两种更精准的方式:
方法1:通过列默认值关联序列
该方法通过匹配自增列的默认值表达式,关联到对应的序列:
SELECT c.table_name, c.column_name, s.sequence_name, s.sequence_schema FROM information_schema.columns c JOIN information_schema.sequences s ON c.column_default LIKE '%' || s.sequence_name || '%' WHERE c.table_name = '目标表名' -- 替换为你要查询的表名 AND c.table_schema = 'public'; -- 表所在模式,按需替换
方法2:使用系统表pg_depend查询依赖关系
PostgreSQL的系统表pg_depend记录了对象间的依赖关系,可通过它直接关联表和序列:
SELECT seq.relname AS sequence_name, tab.relname AS table_name FROM pg_class seq JOIN pg_depend dep ON seq.oid = dep.objid JOIN pg_class tab ON dep.refobjid = tab.oid WHERE seq.relkind = 'S' -- 筛选出序列类型对象 AND tab.relname = '目标表名' -- 替换为目标表名 AND tab.relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'public'); -- 替换为表所在模式
内容的提问来源于stack exchange,提问作者user21707082
相关产品推荐
相关产品推荐

