Pages: 1
- Sujet précédent - autoincrementation ID sur table existante pour formulaire - Sujet suivant
#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
Pages: 1
- Sujet précédent - autoincrementation ID sur table existante pour formulaire - Sujet suivant