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 Fri 26 June 2015 17:08

JP LLORENS
Participant assidu
Date d'inscription: 12 Nov 2008
Messages: 231

trigger qui boucle

Bonjour.
Sous PostgreSQL j'ai créé un trigger qui permet lors de la modification d'un objet, de faire un update de tous les objets (dans la même table) ayant le même numéro de dossier.

CREATE TRIGGER t_conformite_up_alerte
  BEFORE INSERT OR UPDATE
  ON sig_conformite
  FOR EACH ROW
  EXECUTE PROCEDURE conformite_up_alerte();

J'ai donc une ligne dans mon trigger qui ressemble à ça :
...
update sig_conformite set alerte_date = 1 where date_conformite <NEW.date_conformite and nom_dossier = NEW.nom_dossier;
...

Du coup, puisque j'ai un update, le trigger va s'appeler lui même pour chacun des objets concernés par mes critères jusqu'à ce qu'il trouve un critère qui lui permette de sortir.... ou pas !
Dans mon cas le trigger fonctionne, mais n'y aurait-il pas un moyen de bloquer la possibilité de s'appeler lui même ?
Merci par avance de vos retours.
JP

Hors ligne

 

#2 Fri 26 June 2015 19:03

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9853
Site web

Re: trigger qui boucle

Bonjour,

Tu ne devrais pas faire une RULES plutôt qu'un trigger et une fonction si ce n'est que pour modifier la requête ?

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#3 Mon 29 June 2015 10:35

JP LLORENS
Participant assidu
Date d'inscription: 12 Nov 2008
Messages: 231

Re: trigger qui boucle

Bonjour Yves.
Je n'ai jamais pratiqué les RULES, je me plonge dans la doc pour voir si ça répond à mes soucis.
merci
JP

Hors ligne

 

#4 Mon 29 June 2015 10:55

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9853
Site web

Re: trigger qui boucle

Bonjour,

En fait ca va dépendre ce qu'il y a autours de la requête que tu as indiquée plus haut. Si elle est unique cela veut dire que tu peux modifier ta requête initiale (envoyée) à la volée par celle que tu as citée. Sinon tu devras faire autrement.

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#5 Mon 29 June 2015 14:27

damika
Participant occasionnel
Lieu: Bidart
Date d'inscription: 3 Aug 2010
Messages: 33

Re: trigger qui boucle

Bonjour,
Dans la définition du trigger peut être en minimisant la liste des colonnes qui déclenchent le trigger :
- UPDATE OF column_name1 [, column_name2 ... ] : dans IsiGéo toutes les colonnes définies modifiable sont mises à jour même si la valeur n'a pas changé
- ou en mettant une condition de déclenchement : WHEN ...

Dernière modification par damika (Mon 29 June 2015 14:31)

Hors ligne

 

#6 Mon 29 June 2015 16:45

Martin Bocquet
Participant occasionnel
Date d'inscription: 4 Mar 2015
Messages: 22

Re: trigger qui boucle

Bonjour,

Une autre possibilité est de modifier ta procédure pour enlever la ligne incriminée.
Ca pourra se faire via une commande de type :

Code:

SELECT ... FROM table WHERE id != NEW.id;

ou, en appliquant à ta requête :

Code:

update sig_conformite set alerte_date = 1 where id != NEW.id AND date_conformite = ...

A toi ensuite de faire ces traitements sur cette nouvelle table.

Dernière modification par Martin Bocquet (Mon 29 June 2015 16:45)

Hors ligne

 

#7 Thu 02 July 2015 16:10

JP LLORENS
Participant assidu
Date d'inscription: 12 Nov 2008
Messages: 231

Re: trigger qui boucle

Bonjour.
J'ai presque réussi à me dépatouiller avec mon problème.
J'ai testé les RULES mais je me suis rendu compte qu'elles avaient elles aussi tendance à se relancer en boucle avec le risque de ne pas en sortir (si on a oublié un test en cours de route ....)
J'ai donc joué sur la définition des colonnes qui déclenchent les triggers (UPDATE OF XXX) , ajouté des tests, distingué les triggers en insert et ceux en update, et enfin bloqué le déclenchement de certains triggers (disable /enable) lors d'un INSERT.
Merci donc pour vos suggestions qui m'ont bien inspiré.
Cordialement
JP

Hors ligne

 

Pied de page des forums

Powered by FluxBB