banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Fri 25 January 2013 09:58

JP LLORENS
Participant assidu
Date d'inscription: 12 Nov 2008
Messages: 231

[Postgres] recalcul d'une clé primaire

Bonjour.
J'ai une clé primaire (ogc_fid,  qui s'incrémente automatiquement à la création d'un nouvel objet ) corrompue dans une table Postgres. Est-il possible de la recalculer ?
Merci par avance.
JP

Hors ligne

 

#2 Fri 25 January 2013 10:09

sigdu80
Participant actif
Date d'inscription: 2 Sep 2010
Messages: 112

Re: [Postgres] recalcul d'une clé primaire

Bonjour,

quand tu dis que la clé est corrompue, c'est à dire ?
Ta clé primaire est de type serial ?
Tu as un message spécifique quand tu consultes la table postgresql ?
Que contient les lignes concernant cette colonne ogc_find (juste dire sur 2,3 lignes) ?

Hors ligne

 

#3 Fri 25 January 2013 11:45

Gr1ng
Participant occasionnel
Date d'inscription: 7 Nov 2007
Messages: 30

Re: [Postgres] recalcul d'une clé primaire

Bonjour,


ALTER SEQUENCE schema.table_ogc_fid_seq RESTART WITH 1 ;

Hors ligne

 

#4 Fri 25 January 2013 12:06

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9869
Site web

Re: [Postgres] recalcul d'une clé primaire

Bonjour,

Je pense pas que remettre à 1 la série va corriger le problème. Probablement qu'il y a un décalage entre la séquence et ce qui est utilisé dans le champ de la table.

Il y a un moyen pour remettre à jour la séquence en fonction du max(ogc_fid) de la table mais je ne l'ai pas sous la main mais google est mon amis :

SELECT MAX(id) FROM your_table;

// Puis lance
// Cela doit être plus haut que le résultat précédent.
SELECT nextval('your_table_id_seq');

// Si ce n'est pas le cas lance ceci pour metre à jour la séquence
SELECT setval('your_table_id_seq', (SELECT MAX(id) FROM your_table));


Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#5 Fri 25 January 2013 12:35

JP LLORENS
Participant assidu
Date d'inscription: 12 Nov 2008
Messages: 231

Re: [Postgres] recalcul d'une clé primaire

Merci pour les retours.
Pour répondre à sigdu80, dans un moment de lyrisme sql j'ai du modifier à la mimine une valeur de clé (ogc_fid est en serial not null) donc forcément quand j'essaye d'intégrer de nouveaux éléments via qgis, ça grogne pas mal et je me retrouve avec des valeurs de clef négative.
Je vais tester l'Alter sequence proposé.
Cordialement
JP

Hors ligne

 

#6 Fri 25 January 2013 16:13

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 Sep 2005
Messages: 3199
Site web

Re: [Postgres] recalcul d'une clé primaire

Bonjour,

je me retrouve avec des valeurs de clef négative.


Si je lis bien la doc postgresql Serial est un entier positif codé sur 32 bits. Une valeur négative c'est que la valeur SERIAL se prend d'un coup pour un entier signé ?


Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close

Hors ligne

 

#7 Fri 25 January 2013 16:53

JP LLORENS
Participant assidu
Date d'inscription: 12 Nov 2008
Messages: 231

Re: [Postgres] recalcul d'une clé primaire

Je ne sais pas !
L'origine du problème vient de la valeur START de ma séquence était inférieure à la valeur max de ma clef. J'ai essayé de corriger le tir en recalculant la clef de tous mes enregistrements via la calculette de qgis, et là tout est parti en vrille.
J'ai réglé le problème en supprimant les enregistrements avec des clef négatives et en lançant ensuite la requête Alter sequence suggérée par Gr1ng.
Merci à tous

Hors ligne

 

Pied de page des forums

Powered by FluxBB