Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 16/09/2011 15:35:55
- Pascal24
- Membre
Remplir un champ par jointure spatiale
Bonjour,
Je souhaite faire une jointure spatiale (PostgrSQL/PostGis) entre une table de point (nomtablepct) et une de polygone (nomtablesurf) afin de remplir
un champ num de la table nomtablepct avec les données du champ num de la table nomtablesurf.
Je veux que cette jointure s’active via une fonction trigger et qu’à chaque création ou mise à jour de données de ma table nomtablepct, que le champ num se remplisse automatiquement avec la valeur du champ num de la table nomtablesurf par jointure spatiale. (Bon là je me suis un peux répété,… )
J’ai fais une fonction et un trigger qui se créent bien sans erreur, mais ça ne me renvoi pas la donnée du champ num et j’ai un message d’erreur sur le terme « geometry ». J’ai probablement fais une erreur dans ma requête ma là je coince.
Merci de votre aide.
CREATE OR REPLACE FUNCTION num_func()
RETURNS trigger AS
$BODY$
BEGIN
select into NEW.num num from nomtablesurface where within(NEW.geometry, geometry);
return NEW ;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION num_func() OWNER TO postgres;
CREATE TRIGGER nomtablepct_num_trig
BEFORE INSERT OR UPDATE
ON nomtablepct
FOR EACH ROW
EXECUTE PROCEDURE num_func();
Hors ligne
#2 21/09/2011 11:28:16
- vincentp
- Membre
Re : Remplir un champ par jointure spatiale
Salut,
Bonjour,
J’ai fais une fonction et un trigger qui se créent bien sans erreur, mais ça ne me renvoi pas la donnée du champ num et j’ai un message d’erreur sur le terme « geometry ». J’ai probablement fais une erreur dans ma requête ma là je coince.
Merci de votre aide.
«geometry» est un nom de type. Est ce que votre colonne de type geometry ne s'appelle pas plutôt «the_geom», comme il est coutume de le faire ?
Cdt,
Vincent
Hors ligne
Pages : 1