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 Wed 29 April 2020 18:38

Theos2000
Participant assidu
Date d'inscription: 15 Jun 2015
Messages: 221

autoincrementation ID sur table existante pour formulaire

Bonjour,

Dans Postgresql je  souhaitais creer un id autoincrementer qui s'intègre dans un trigger afin que l'ajout d'une nouvelle géométrie via Qgis remplisse automatiquement le champ ID.

Actuellement mon champ ID est biginteger mais pas possible de le transformer en "serial". Au regard de la doc il me semblait possible  de pouvoir creer une séquence est de raccrocher cet id  a cette séquence mais ça ne marche pas

Code:

ALTER TABLE schema.table alter column id integer not null  DEFAULT nextval('"schema_sequence.test_sequence_id_seq"'::regclass)

La seule possibilité que j'ai trouvé c'est de creer un nouvel id en serial mais le champs creer se retrouve a la fin de la table ce qi est un peu embetant pour le remplissage de mon formulaire ou de creer une nouvelle table avec un id en serial, mais problématique pour les tables qui ont plus d'une centaine de colonnes.


Est ce qu'il existe une solution sans recreer une nouvelle colonne ou table ?

Merci à vous

Hors ligne

 

#2 Thu 30 April 2020 09:25

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1554

Re: autoincrementation ID sur table existante pour formulaire

Bonjour,

C'est possible:
prenez la valeur max de l'id existant
créez une sequence démarrant a cette valeur + 1
altérez votre colonne id pour que son default soit le nextval de votre séquence.

Nicolas

Hors ligne

 

#3 Thu 30 April 2020 10:51

Theos2000
Participant assidu
Date d'inscription: 15 Jun 2015
Messages: 221

Re: autoincrementation ID sur table existante pour formulaire

Merci pour cette réponse, mais en fait je n'arrive pas alterer le colonne id il me renvoi l'erreur suivante 

Code:

ERREUR:  erreur de syntaxe sur ou près de « DEFAULT »

En gros j'ai creer une sequence en comptant le nombre de ligne de ma table +1, pas de soucis, mais il ne veut pas alterer le 'id' avec le code suivant

Code:

ALTER TABLE schema.table alter column id integer not null  DEFAULT nextval('"schema_sequence.test_sequence_id_seq"'::regclass)

Hors ligne

 

Pied de page des forums

Powered by FluxBB