Otomatik olarak oluşturulan diziler (SERİ sütunlar için oluşturulanlar gibi) ve üst tablo arasındaki ilişki, dizi sahibi özniteliği tarafından modellenir.
Bu ilişkiyi, ALTER SEQUENCE komutunun OWNED BY yan tümcesini kullanarak değiştirebilirsiniz.
örneğin ALTER SEQUENCE foo_id OWNED tarafından foo_schema.foo_table
foo_table tablosuna bağlanacak şekilde ayarlamak için
ya da ALTER SEQUENCE foo_id YOK
sekans ve herhangi bir tablo arasındaki bağlantıyı kesmek için
Bu ilişki hakkındaki bilgiler pg_depend katalog tablosunda saklanır .
birleşme ilişkisi, diziyi birleştirme kaydına bağlayan pg_depend.objid -> pg_class.oid WHERE relkind = 'S' - ve sonra bağlantıyı bağlayan pg_depend.refobjid -> pg_class.oid WHERE relkind = 'r' arasındaki bağlantıdır sahip olma ilişkisine kayda katıl (tablo)
Bu sorgu, bir veritabanındaki tüm dizi -> tablo bağımlılıklarını döndürür. Where cümlesi onu yalnızca otomatik olarak oluşturulan ilişkileri içerecek şekilde filtreler, bu da onu yalnızca SERIAL yazılan sütunlar tarafından oluşturulan dizileri görüntülemeyle sınırlar.
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' ;