Vous n'êtes pas identifié(e).
Pages : 1
Bonjour, étant novice dans les fonctions / déclencheurs, je sollicite vos compétences.
J'ai des tables, "za_pm" qui est un polygone et "adresse" qui est un point.
Ces deux tables ont un champ "nom_pm".
Les points de la table adresse se trouve géométriquement dans les polygones de la table za_pm.
Comment remplir automatiquement le champ "nom_pm" de la table adresse par le champ "nom_pm" de la table za_pm.
Merci :-)
Hors ligne
J'ai trouvé mon bonheur en fouillant sur le net, mais mon champ se remplit quand je crée de nouvelles entités dans la table adresse. Celles déjà présentes ne se mettent pas à jour.
Voici mon code
CREATE OR REPLACE FUNCTION public.nompm_func()
RETURNS trigger AS
$BODY$
BEGIN
select into NEW.nom_pm nom_pm from za_pm where st_within(NEW.geom, geom);
return NEW ;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION public.nompm_func()
OWNER TO postgres;
CREATE TRIGGER nompm
BEFORE INSERT OR UPDATE OF pm
ON public.suivi_immeuble
FOR EACH ROW
EXECUTE PROCEDURE public.nompm_func();
Hors ligne
Bonjour,
Je ne comprends pas, votre trigger se déclenche lors d'un INSERT/UPDATE de la table "suivi_immeuble" mentionnant la colonne "pm"...
D'après votre explication ce serait plutôt
CREATE TRIGGER nompm
BEFORE INSERT OR UPDATE OF geom
ON public.adresse
FOR EACH ROW
EXECUTE PROCEDURE public.nompm_func();
Hors ligne
Bonjour,
effectivement c'est bien public.adresse
Par contre les entités déjà existantes ne se mettent pas à jour.
Hors ligne
L'appel de la fonction "nompm_func" est déclenché sur un INSERT ou un UPDATE. Donc, la colonne "nom_pm" d'une entité existante n'est mise à jour que si vous modifiez sa géométrie (colonne "geom")
Hors ligne
Merci :-)
Hors ligne
Pages : 1