#1 Thu 14 November 2019 09:16
- Floflo49fb
- Participant assidu
- Lieu: Montpellier
- Date d'inscription: 29 Aug 2009
- Messages: 250
- Site web
Trigger - Mise à jour de label
Bonjour à tous,
Mon problème est le suivant, j'ai une couche de points avec un champ "points.name" qui doit récupérer le "polygons.name" des polygones sous jacents.
J'arrive bien à faire un update sur la couche mais j'aimerai utiliser un trigger pour remplir le "points.name" lorsque l'utilisateur ajoute ou modifie un points :
Toutes mes tentatives de TRIGGER ont échoué mais j'aimerai mettre à jour ma table :
Code:
CREATE OR REPLACE FUNCTION "avsf_up".trigger_up_name() RETURNS TRIGGER AS $$ BEGIN NEW.name := concat(string_agg(s.name, '; ')) FROM points p INNER JOIN polygons s ON ST_Within(p.geom, s.geom) WHERE p.id=OLD.id GROUP BY p.id; RETURN NEW; END $$ LANGUAGE plpgsql;
Vous remerciant par avance,
Florian Boret
Dream it, Make it, Share it
Hors ligne
#2 Thu 14 November 2019 09:39
- Floflo49fb
- Participant assidu
- Lieu: Montpellier
- Date d'inscription: 29 Aug 2009
- Messages: 250
- Site web
Re: Trigger - Mise à jour de label
Je pose ma solution ici :
Code:
CREATE OR REPLACE FUNCTION "avsf_up".trigger_up_name() RETURNS TRIGGER AS $$ BEGIN NEW.name := concat(string_agg(s.name, '; ')) FROM polygons s WHERE NEW.id=NEW.id AND ST_Within(NEW.geom, s.geom) GROUP BY NEW.id; RETURN NEW; END $$ LANGUAGE plpgsql;
Dernière modification par Floflo49fb (Thu 14 November 2019 09:40)
Florian Boret
Dream it, Make it, Share it
Hors ligne