PostgreSQL:如何列出序列所属的表?

H.Ç*_*Ç.T 2 postgresql postgresql-11

我知道我可以用这个列出所有序列:

SELECT * FROM information_schema.sequences;
Run Code Online (Sandbox Code Playgroud)

但我需要知道这个序列被哪个表使用。

我想这样做的原因是为了找出哪些PRIMARY KEYs序列不是默认格式的table_name_id_seq

这可能吗?

注意:我的 PostgreSQL 版本是 11.5。

Lau*_*lbe 6

信息存储在pg_depend

SELECT t.oid::regclass AS table_name,
       a.attname AS column_name,
       s.relname AS sequence_name
FROM pg_class AS t
   JOIN pg_attribute AS a
      ON a.attrelid = t.oid
   JOIN pg_depend AS d
      ON d.refobjid = t.oid
         AND d.refobjsubid = a.attnum
   JOIN pg_class AS s
      ON s.oid = d.objid
WHERE d.classid = 'pg_catalog.pg_class'::regclass
  AND d.refclassid = 'pg_catalog.pg_class'::regclass
  AND d.deptype = 'i'
  AND t.relkind IN ('r', 'P')
  AND s.relkind = 'S';
Run Code Online (Sandbox Code Playgroud)