Vous n'êtes pas identifié(e).

#1 19/11/2009 15:37:18

gilou974
Membre

Lister le nom de toutes les sequences d'une base

Bonjour à tous.

Après recherche je ne trouve pas s'il existe un moyen de récupérer via une fonction tous les noms des séquences de ma base de manière à pourvoir effectuer un reset des valeurs.

Quelqu'un aurait-il une méthode ?

Merci par avance

Hors ligne

#2 19/11/2009 16:20:22

gilou974
Membre

Re : Lister le nom de toutes les sequences d'une base

Desole si j'ai fait perdre du temps à quelqu'un en cherchant plus j'ai eu ma réponse merci à Guillaume (Gleu) qui avait déjà donné la solution en répondant à une autre question...

Solution donc :
Le catalogue système pg_class contient toutes les informations nécessaires pour faire cette opération. Il vous suffit d'exécuter une requête sur cette table en récupérant le nom de l'objet (colonne relname) après avoir fait un filtre sur le type (relkind, r pour table, i pour index, s pour séquence). N'oubliez pas de filtrer les objets systèmes (ie tous ceux dont le nom commence par pg_).

Donc, exécutez cette requête dans la fonction PL/pgsql, utilisez une boucle FOR pour récupérer ligne par ligne (donc table par table, index par index, séquence par séquence), et construisez une chaîne de requête pour exécuter le ALTER objet nom OWNER TO utilisateur.

Merci encore

Hors ligne

#3 19/11/2009 16:57:28

gilou974
Membre

Re : Lister le nom de toutes les sequences d'une base

Autres solution : pour les sequences on a : SELECT * FROM information_schema.sequences

Hors ligne

#4 19/11/2009 17:03:49

daamien
damien clochard

Re : Lister le nom de toutes les sequences d'une base

\ds

smile

Hors ligne

Pied de page des forums