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 22/02/2024 10:38:19

Nyldan
Membre

trigger update concatenation

Bonjour,

j'ai un problème sur un trigger que je perçois en partie.
Dans une table, j'ai une colonne ident avec une contrainte d'unicité. Pour créer cet ident, j'ai créée un trigger (BEFORE INSERT OR UPDATE) qui concatène 3 champs de trois autres colonnes (ident=concat(toto,'_',titi,'_',tata) : attention ce n'est pas mon code, c'est pour information).
Le problème est que quand je souhaite mettre à jour plusieurs lignes en même temps en ajoutant +1 au champ tata par exemple, j'ai un message d'erreur qui m'indique que la contrainte d'unicité est violée car un ident existe déjà. Ça me parait normal, car l'update se fait ligne par ligne et il rencontre forcément le même ident à un moment donné?

Y a t-il un moyen de contourner de celà?

Je peux détailler un peu plus avec du code par la suite si l'explication ne semble pas claire.

Merci

Hors ligne

#2 22/02/2024 10:51:23

rjuju
Administrateur

Re : trigger update concatenation

Bonjour,


Il s'agit d'un probleme classique.  La solution habituelle est de positionner la ou les contraintes voulues en DEFERRABLE INITIALLY DEFERRED, cf https://www.postgresql.org/docs/current … aints.html

Hors ligne

#3 22/02/2024 15:09:03

Nyldan
Membre

Re : trigger update concatenation

Merci beaucoup pour votre aide.

Hors ligne

Pied de page des forums