Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

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

 

Pied de page des forums

Powered by FluxBB