La relation entre les séquences générées automatiquement (tels que ceux qui sont créés pour les colonnes en série) et la table parent est modélisé par l'attribut de propriétaire de séquence.
Vous pouvez modifier cette relation à l'aide de la APPARTENANT clause du ALTER SEQUENCE commmand
par exemple ALTER SEQUENCE foo_id OWNED par foo_schema.foo_table
de le mettre à être relié à la table foo_table
ou SEQUENCE ALTER foo_id appartenant à NONE
pour rompre la liaison entre la séquence et une table
Les informations concernant cette relation est stocké dans le pg_depend catalogue table. La relation de jointure est le lien entre pg_depend.objid -> pg_class.oid O WH relkind = 'S' - qui relie la séquence à l'enregistrement de jointure puis pg_depend.refobjid -> pg_class.oid OERE relkind = 'r' , qui lie l'enregistrement de jointure à la relation propriétaire (table)
Cette requête renvoie toutes les dépendances de séquence -> dans une base de données. La clause where le filtre pour inclure uniquement les relations générées automatiquement, ce qui le limite à l'affichage des séquences créées par des colonnes typées 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' ;
Il convient de noter que vous faites la conversion dans le mauvais sens. Depuis qu'Oracle a acheté Sun, ils ont lentement détruit MySQL, donc à moins que vous ne méprisiez votre client (auquel cas vous devriez simplement quitter) vous devriez rester avec PostgreSQL car aucune société (pro-monopole de non) ne peut venir, avaler PostgreSQL et éventuellement le remplacer par leur propre base de données. – John
@John Je dirais qu'il y a un milliard et une autre raison de rester avec postgres, et un milliard de plus pour ne jamais toucher mysql, mais oui - votre point est toujours très valable :) – Ruslan
@John à l'époque (2009) nous avons besoin d'une base de données plus simple à traiter - et mysql était mieux couplé à php – apelliciari