bonjour,
voici mon problème :
- une table TABLE avec une PK ID de type serial
- la sequence TABLE_ID_seq de génération de l'ID de la table.
- un trigger TRIGGER sur l'insertion dans table.
- une sequence TRIGGER_seq
- la fonction TRIGGER fait appel a une sequence TRIGGER_seq
j'execute les commandes suivantes :
insert into TABLE (...)
select lastval();
Le résultat de l'appel à la fonction lastval() me retourne la dernière valeur de la séquence TRIGGER_seq et non de TABLE_ID_seq comme on pourrais si attendre.
En y réfléchissant c'est logique la dernière séquence appelé est TRIGGER_seq. Mais d'un point de vue fonctionnel c'est un problème car je ne peut par récupérer de cette manière l'id de la ligne inséré.
j'ai résolu le probleme en récupérant lastval('TABLE_ID_seq'), mais j'aimerais savoir si il n'y a pas une solution plus "maintenable" qui permette de confiner ce qui se passe dans mon trigger sans qu'il y ai ce genre d'effet de bord.
Merci,
Patrice.
Partager