Связь между автоматически сгенерированными последовательностями (например, созданными для столбцов SERIAL) и родительской таблицей моделируется атрибутом владельца последовательности.
Вы можете изменить это отношение, используя предложение OWNED BY команды ALTER SEQUENCE.
например, ALTER SEQUENCE foo_id, СОБСТВЕННЫЙ от foo_schema.foo_table
установить привязку к таблице foo_table
или ПОСЛЕДОВАТЕЛЬНАЯ ПОСЛЕДОВАТЕЛЬНОСТЬ foo_id, СОБСТВЕННАЯ ОТСУТСТВУЕТ
разорвать связь между последовательностью и любой таблицей
Информация об этом отношении хранится в таблице каталога pg_depend .
отношение соединения - это связь между pg_depend.objid -> pg_class.oid WHERE relkind = 'S' - которая связывает последовательность с записью соединения, а затем pg_depend.refobjid -> pg_class.oid WHERE relkind = 'r', которая связывает присоединить запись к собственному отношению (таблица)
Этот запрос возвращает все зависимости последовательности -> таблицы в базе данных. Предложение where фильтрует его, чтобы оно включало только автоматически сгенерированные отношения, что ограничивает его отображением только последовательностей, созданных столбцами с типом 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' ;