Annonce
Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).
En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.
#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