Message posté par : Vincent-SIABS
----------------------------------------
Bonjour,
débutant avec les triggers j'ai beaucoup progressé grâce à l'aide des membres du
forum que je remercie. cf post
https://georezo.net/forum/viewtopic.php?id=121987 &
https://georezo.net/forum/viewtopic.php?id=121953
Mais je suis encore confronté à un petit soucis qui je pense vient plus de
l'organisation de la base de donnée voir de l'ordre de déclenchement des triggers
plutôt que d'une erreur dans les triggers en soit. VOilà mon soucis :
J'ai 2 trigger.
Le TRIGGER 1 : remonte dans une table ligne une info "data" contenue dans une
table point.
Le TRIGGER 2 : remonte dans la table ligne cette même info "data" pour toutes
nouvelles lignes dont le point de départ correspond au point d'arrivée d'une ligne
déjà existante.
L'idée derrière cela est de faire "suivre" l'info "data" de
façon automatique lors du traçage de mes réseaux.
Quand je n'ai qu'un seul trigger "d'activé" ça fonctionne. Quand
"j'active" les 2 triggers seul le TRIGGER 2 fonctionne, le TRIGGER 1 ne
fonctionne plus.
TRIGGER 1
-----------------
Code :
CREATE OR REPLACE FUNCTION TRIGGER 1 ()
RETURNS "trigger" AS $$
BEGIN
new.data= (SELECT p.data
FROM table_point as p
WHERE st_dwithin(st_startpoint(new.geom),(p.geom),0.001)
);
RETURN NEW;
END;
$$
LANGUAGE 'plpgsql'VOLATILE;
CREATE TRIGGER TRIGGER 1
BEFORE INSERT OR UPDATE ON table_ligne
FOR EACH ROW EXECUTE PROCEDURE TRIGGER 1 ();
-----------------
TRIGGER 2
-----------------
Code :
CREATE OR REPLACE FUNCTION TRIGGER2 ()
RETURNS "trigger" AS $$
BEGIN
NEW.data=m.data
FROM table_ligne
WHERE st_dwithin(ST_startpoint(new.geom),st_endPoint(m.geom),0.001);
RETURN NEW;
END;
$$
LANGUAGE 'plpgsql'VOLATILE;
CREATE TRIGGER TRIGGER2
BEFORE INSERT OR UPDATE ON table_ligne
FOR EACH ROW EXECUTE PROCEDURE TRIGGER2 ();
-----------------
Existe t'il un moyen de les hiérarchiser ? ou de faire en sorte qu'ils ne se
marchent pas sur les pieds ?
Merci de votre aide.
Vincent
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=338150#p338150
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net