Message posté par : Léandre Béron
----------------------------------------
Bonjour,
Après quelques tests, sans les triggers mis en place pour d'autres besoins, le ON
DELETE CASCADE fonctionne très bien...
J'ai donc un problème dans l'un des triggers généré.
Le problème vient de cette fonction trigger :
-----------------
Citation :
-- an_voie : longueur de la voie
CREATE FUNCTION rva.delete_calcul_longueur_voie() RETURNS trigger AS $BODY$
DECLARE
v_long_delete real;
v_id_delete integer;
begin
IF (TG_TABLE_NAME = 'an_section_voie') THEN
SELECT longueur FROM rva.an_voie WHERE id_voie = OLD.id_voie INTO v_long_delete;
-- on recalcul la longueur avec le OLD.idvoie
v_id_delete := OLD.id_voie; -- on récupère ancien id_voie associé
v_long_delete := v_long_delete - (SELECT sum(st_length(s.geom)) FROM
rva.geo_section_voie s, rva.an_section_voie sv
WHERE sv.id_sectvoi = OLD.id_sectvoi AND s.id_section = sv.id_section);
IF v_long_delete IS null THEN -- si null on met 0 (nécessaire car le null emporte sur le
0 sur l'opération v_long_old au dessus)
v_long_delete := 0;
END IF;
UPDATE rva.an_voie SET longueur = v_long_delete WHERE id_voie = v_id_delete;
END IF;
-- marche pas ça...
/*IF (TG_TABLE_NAME = 'geo_section_voie') THEN
DELETE FROM rva.an_section_voie WHERE id_section = OLD.id_section;
END IF;*/
return NEW;
end;
$BODY$ LANGUAGE plpgsql;
CREATE TRIGGER tr_calc_voies3 BEFORE DELETE ON rva.an_section_voie
FOR EACH ROW EXECUTE PROCEDURE rva.delete_calcul_longueur_voie();
-----------------
Celle-ci empêche visiblement la suppression de mes objets qui étaient liées à ma section
de voie..
Il s'agit pourtant d'un BEFORE DELETE, afin de recalculer la longueur de mes voies
en faisant la somme des longueurs des sections associées à la voie..
Merci
Léandre
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=338665#p338665
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