Mối quan hệ giữa các chuỗi được tạo tự động (chẳng hạn như các chuỗi được tạo cho các cột SERIAL) và bảng cha được mô hình hóa bởi thuộc tính chủ sở hữu chuỗi.
Bạn có thể sửa đổi mối quan hệ này bằng cách sử dụng mệnh đề SỞ HỮU BỞI của ủy ban ALTER SEQUENCE
ví dụ: ALTER SEQUENCE foo_id SỞ HỮU bởi foo_schema.foo_table
để đặt nó được liên kết với bảng foo_table
hoặc ALTER SEQUENCE foo_id SỞ HỮU
phá vỡ kết nối giữa chuỗi và bất kỳ bảng nào
Thông tin về mối quan hệ này được lưu trữ trong bảng danh mục pg_depend .
mối quan hệ tham gia là liên kết giữa pg_depend.objid -> pg_group.oid WHERE relkind = 'S' - liên kết chuỗi với bản ghi tham gia và sau đó pg_depend.refobjid -> pg_ class.oid WHERE relkind = 'r', liên kết tham gia hồ sơ để quan hệ sở hữu (bảng)
Truy vấn này trả về tất cả các chuỗi -> phụ thuộc bảng trong cơ sở dữ liệu. Mệnh đề where lọc nó chỉ bao gồm các mối quan hệ được tạo tự động, điều này hạn chế nó chỉ hiển thị các chuỗi được tạo bởi các cột được gõ 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' ;