#1 Thu 02 July 2015 17:06
- JP LLORENS
- Participant assidu
- Date d'inscription: 12 Nov 2008
- Messages: 231
Trigger postgresql : valeur NEW qui ne remonte pas
Bonjour.
J'ai un souci avec un trigger.
Celui-ci se déclenche sur un update de la géométrie ou d'un champs nommé 'libelle'.
Lorsque je lance un update avec la valeur de libelle = 'Conforme' , le trigger se déclenche bien, fait ce qu'il faut, mais par contre le NEW.libelle n'est pas remontée dans ma base, la valeur du champ reste en l'état (avec l'ancienne valeur).
CREATE TRIGGER t_test_trigger
BEFORE UPDATE OF the_geom, libelle
ON sig_conformite
FOR EACH ROW
EXECUTE PROCEDURE test_trigger();
....
BEGIN
nb_dossier = 0;
nb_dossier = count(nom_dossier)from sig_conformite where nom_dossier = NEW.nom_dossier;
IF NEW.libelle = 'Conforme' THEN
NEW.alerte_date = 1;
raise notice 'nb dossiers :%', nb_dossier;
IF nb_dossier > 1 THEN
update sig_conformite set alerte_date = 1 where nom_dossier = NEW.nom_dossier;
END IF;
END IF;
return NEW;
En simplifiant le trigger je me suis rendu compte que c'est la ligne update sig_conformite set alerte_date = 1 where nom_dossier = NEW.nom_dossier qui met le bazar.
Je ne comprend pas pourquoi. J'ai supprimé tous les autres trigger (en cas d'interaction) mais le phénomène perdure. Quand je fais un raise notice sur NEW.libelle la valeur est bien 'Conforme', mais en final dans ma table, elle reste à 'Non conforme'.
Si quelqu'un à une idée sur la source du problème je suis preneur.
Cordialement
JP
Hors ligne