Annonce
Pour sa 21ème année, l’association GeoRezo a toujours besoin de vous !
10€ = 1 mois de frais bancaires ; 15€ = 12 mois de nom de domaine ; 30€ = 1 semaine de location des serveurs …
Retrouver nos membres bienfaiteurs
#1 Fri 24 September 2021 16:49
- Patricia_85
- Participant occasionnel
- Lieu: Bourges
- Date d'inscription: 6 Apr 2012
- Messages: 10
PostgreSQL-QGIS Identifiant unique
Bonjour,
Je crée des points sur une table PostgreSQL/PostGIS à partir de QGIS 3.16.
La numérotation de l'identifiant unique se fait automatiquement :
nextval('ma_table_id_seq'::regclass)
Quand je supprime des lignes, je souhaiterais reprendre la numérotation à partir du dernier objet conservé dans la table.
Il se trouve que la numérotation garde en mémoire les numéros des lignes supprimées et donc j'obtiens des trous dans la suite des numéros.
J'ai tenté un Vaccum Full, sans succès.
Est-il possible de retirer de la mémoire de Postgres les numéros des lignes supprimées ?
En espérant être claire dans mes explications.
Merci d'avance pour réponses.
Hors ligne
#2 Fri 24 September 2021 17:14
- chanteclair
- Participant assidu
- Lieu: Pau
- Date d'inscription: 3 Jan 2007
- Messages: 726
Re: PostgreSQL-QGIS Identifiant unique
Bonjour,
Il faut corriger la séquence de numérotation de la table dans un outil comme PGAdmin.
Cordialement.
Hors ligne
#3 Fri 24 September 2021 17:20
- Patricia_85
- Participant occasionnel
- Lieu: Bourges
- Date d'inscription: 6 Apr 2012
- Messages: 10
Re: PostgreSQL-QGIS Identifiant unique
Merci pour votre réponse.
Nous sommes plusieurs à alimenter cette table, je ne suis pas spécialiste, pensez-vous qu'une fonction-trigger pourrait régler notre problème.
Et si oui, connaissez-vous le contenu de cette fonction ?
Merci
Hors ligne
#4 Fri 24 September 2021 17:33
- Patricia_85
- Participant occasionnel
- Lieu: Bourges
- Date d'inscription: 6 Apr 2012
- Messages: 10
Re: PostgreSQL-QGIS Identifiant unique
Je viens de trouver cette requête, elle semble répondre à ma question.
SELECT setval('your_table_id_seq', COALESCE((SELECT MAX(id)+1 FROM your_table), 1), false);
COMMIT;
Merci encore
Hors ligne
#5 Mon 27 September 2021 17:22
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3199
- Site web
Re: PostgreSQL-QGIS Identifiant unique
Bonjour,
C'est pas vraiment de bonne pratique ce que vous faites.
Soit on utilise un sérial est c'est le comportement classique, numéro attribué une et une seule fois.
Soit vous gérez vous même votre id unique.
Là c'est un mixte des deux qui n'est pas très orthodoxe.
Après ça marche ... mais ...
Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close
Hors ligne
#6 Fri 26 November 2021 11:36
- Patricia_85
- Participant occasionnel
- Lieu: Bourges
- Date d'inscription: 6 Apr 2012
- Messages: 10
Re: PostgreSQL-QGIS Identifiant unique
Bonjour,
Effectivement Christophe V, vous avez raison.
C'était une demande particulière de certains utilisateurs.
Finalement, nous avons décidé de ne pas de corriger la séquence, trop compliqué avec plusieurs utilisateurs et pas utile dans notre cas.
Merci à tous pour vos réponses
Bonne journée
Hors ligne
#7 Mon 29 November 2021 10:32
- Hydrolithe
- Participant assidu
- Lieu: Lyon
- Date d'inscription: 21 Apr 2010
- Messages: 223
Re: PostgreSQL-QGIS Identifiant unique
Bonjour,
A noter que depuis PostgreSQL 10, il est possible (voire préférable, chacun jugera selon ses besoins) d'utiliser GENERATED AS IDENTITY plutôt que "serial". Cette syntaxe est définie dans les spécifications ANSI-SQL alors que pour "serial", c'est une syntaxe de PostgreSQL.
Pour plus d'informations sur les intérêts et les différentes options : https://www.postgresqltutorial.com/post … ty-column/
Pierre
Hors ligne
#8 Tue 01 March 2022 15:23
- Patricia_85
- Participant occasionnel
- Lieu: Bourges
- Date d'inscription: 6 Apr 2012
- Messages: 10
Re: PostgreSQL-QGIS Identifiant unique
Merci pour l'info, je vais regarder.
Bonne journée
Hors ligne