O relacionamento entre sequências geradas automaticamente (como aquelas criadas para colunas SERIAL) e a tabela pai é modelado pelo atributo do proprietário da sequência.
Você pode modificar esse relacionamento usando a cláusula OWNED BY do comando ALTER SEQUENCE
por exemplo, ALTER SEQUENCE foo_id POSSUÍDO por foo_schema.foo_table
para configurá-lo para ser vinculado à tabela foo_table
ou ALTER SEQUENCE foo_id POSSUÍDO por NENHUM
para quebrar a conexão entre a sequência e qualquer tabela
As informações sobre esse relacionamento são armazenadas na tabela de catálogo pg_depend .
o relacionamento de junção é o link entre pg_depend.objid -> pg_class.oid WHERE relkind = 'S' - que vincula a sequência ao registro de junção e, em seguida, pg_depend.refobjid -> pg_class.oid WHERE relkind = 'r', que vincula o registro de associação à relação de propriedade (tabela)
Essa consulta retorna todas as sequências -> dependências da tabela em um banco de dados. A cláusula where o filtra para incluir apenas relacionamentos gerados automaticamente, o que o restringe a exibir apenas sequências criadas por colunas digitadas SERIAL.
WITH fq_objects AS (SELECT c.oid,n.nspname || '.' ||c.relname AS fqname ,
c.relkind, c.relname AS relation
FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace ),
sequences AS (SELECT oid,fqname FROM fq_objects WHERE relkind = 'S'),
tables AS (SELECT oid, fqname FROM fq_objects WHERE relkind = 'r' )
SELECT
s.fqname AS sequence,
'->' as depends,
t.fqname AS table
FROM
pg_depend d JOIN sequences s ON s.oid = d.objid
JOIN tables t ON t.oid = d.refobjid
WHERE
d.deptype = 'a' ;