El atributo propietario de la secuencia modela la relación entre las secuencias generadas automáticamente (como las creadas para las columnas SERIAL) y la tabla principal.
Puede modificar esta relación utilizando la cláusula OWNED BY del comando ALTER SEQUENCE
Ej. ALTERAR SECUENCIA foo_id PROPIETADO por foo_schema.foo_table
para que se vincule a la tabla foo_table
o ALTERAR SECUENCIA foo_id PROPIO por NINGUNO
para romper la conexión entre la secuencia y cualquier tabla
La información sobre esta relación se almacena en la tabla de catálogo pg_depend .
la relación de unión es el enlace entre pg_depend.objid -> pg_class.oid WHERE relkind = 'S' - que vincula la secuencia al registro de unión y luego pg_depend.refobjid -> pg_class.oid WHERE relkind = 'r', que vincula el unir registro a la relación propietaria (tabla)
Esta consulta devuelve todas las secuencias -> dependencias de la tabla en una base de datos. La cláusula where lo filtra para incluir solo relaciones generadas automáticamente, lo que lo restringe a mostrar solo secuencias creadas por columnas con tipo 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' ;