Il rapporto tra sequenze generate automaticamente (come quelli creati per colonne serie) e la tabella padre è modellato dall'attributo proprietario sequenza.
È possibile modificare questo rapporto utilizzando la PROPRIETÀ DI clausola ALTER SEQUENCE commmand
esempio ALTER SEQUENCE foo_id OWNED di foo_schema.foo_table
impostare a essere collegata alla tabella foo_table
o ALTER SEQUENCE foo_id proprietà di NESSUNO
per interrompere il collegamento tra la sequenza e qualsiasi tabella
Le informazioni su questo rapporto è memorizzato nel pg_depend catalogue table.
la relazione di unione è il collegamento tra pg_depend.objid -> pg_class.oid WHERE relkind = 'S' - che collega la sequenza al record di join e quindi pg_depend.refobjid -> pg_class.oid WHERE relkind = 'r' , che collega il record di join alla relazione proprietaria (tabella)
Questa query restituisce tutte le dipendenze della sequenza -> tabella in un database. La clausola where la filtra per includere solo le relazioni generate automaticamente, che lo limitano a visualizzare solo le sequenze create dalle colonne tipizzate 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' ;
Va notato che stai facendo la conversione nel modo sbagliato. Dal momento che Oracle ha acquistato Sun, stanno lentamente uccidendo MySQL quindi, a meno che tu non disprezzi il tuo cliente (nel qual caso dovresti semplicemente smettere) dovresti seguire PostgreSQL perché nessuna società (pro-monopolio di no) può venire avanti, inghiottire PostgreSQL e eventualmente sostituirlo con il proprio database. – John
@John Direi che c'è un miliardo e un altro motivo per restare con postgres e un miliardo in più per non toccare mai mysql, ma sì - il tuo punto è ancora molto valido :) – Ruslan
@John al momento (2009) abbiamo bisogno di un database più semplice da gestire - e mysql era meglio abbinato a php – apelliciari