Vous n'êtes pas identifié(e).
Pages : 1
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
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
Julien.
https://rjuju.github.io/
Hors ligne
Merci beaucoup pour votre aide.
Hors ligne
Pages : 1