PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

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

#1 11/07/2012 13:59:35

MitsuTomoe
Membre

Supprimer séquences orphelines

Bonjour à tous,
je viens de m'apercevoir que supprimer une table ne vire pas la séquence associée à la PK.
Bug or feature ?
Qqn aurait-il une requête pour supprimer toutes les séquences orphelines ? En 6 mois de dvpt, je dois en avoir des milliards...
J'ai déjà fait quelques select dans le méta-dictionnaire, mais je n'ose pas faire de modifs.
Je suis en 9.1.4 sous Ubuntu Server 12.04 .

Merci

PS : j'ai installé pg_snap, c'est super, même si je ne comprend pas encore toutes les infos.
J'ai pu corriger 2 tables où j'avais oublié de déclarer la PK .

Hors ligne

#2 11/07/2012 14:51:31

gleu
Administrateur

Re : Supprimer séquences orphelines

je viens de m'apercevoir que supprimer une table ne vire pas la séquence associée à la PK.

Je viens d'essayer et cela fonctionne. Comment avez-vous associé la séquence à la table ?

Qqn aurait-il une requête pour supprimer toutes les séquences orphelines ?

Une telle requête ne risque pas d'exister. Les séquences peuvent servir à plein d'autres choses que de faire des colonnes autoincrémentées dans les tables. Les supprimer automatiquement avec une requête pourrait amener beaucoup de problèmes. Vous allez devoir récupérer chaque séquence et vous demander si vous pouvez ou non la supprimer.


Guillaume.

Hors ligne

#3 11/07/2012 14:51:48

gleu
Administrateur

Re : Supprimer séquences orphelines

Et merci pour pgsnap au passage smile


Guillaume.

Hors ligne

#4 11/07/2012 15:17:02

MitsuTomoe
Membre

Re : Supprimer séquences orphelines

Je crée les tables dans phpPgAdmin et je met la PK en serial, ça crée la séquence automatiquement.
Si j'exporte une table, j'ai par exemple :
CREATE SEQUENCE pige_site_id_site_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;
ALTER TABLE public.pige_site_id_site_seq OWNER TO conclavi;
ALTER SEQUENCE pige_site_id_site_seq OWNED BY pige_site.id_site;
SELECT pg_catalog.setval('pige_site_id_site_seq', 1, true);
ALTER TABLE ONLY pige_site ALTER COLUMN id_site SET DEFAULT nextval('pige_site_id_site_seq'::regclass);

Hors ligne

#5 11/07/2012 15:22:07

gleu
Administrateur

Re : Supprimer séquences orphelines

Donc elle doit être supprimée lorsque la table est supprimée. Essayez, vous verrez que ça marche. Et si ce n'est pas le cas, quelle version de PostgreSQL utilisez-vous ?


Guillaume.

Hors ligne

#6 11/07/2012 15:30:23

MitsuTomoe
Membre

Re : Supprimer séquences orphelines

Je viens d'essayer sur cette table et ça marche . J'ai du confondre 2 noms ?
Désolé pour le bruit.

Hors ligne

Pied de page des forums