Message posté par : ibou5va(a)hotmail.fr (ibou5va(a)hotmail.fr)
----------------------------------------
Bonjour,
Je dois remplir un champ "mtd_geographical_area" de ma table "t_well"
par le champ "iso2_code" de ma table "country_standard_eureka_shape".
La table "t_well" est une couche de points qui est intersectée par la table
"country_standard_eureka_shape" qui est elle une couche de polygone.
J'effectue donc une jointure spatiale pour alimenter le champ
"mtd_geographical_area" dans la table "t_well".
Pour infos, les 2 tables sont dans le même schéma "catalogdb".
La requête ci-dessous fonctionne bien :
UPDATE catalogdb.t_well SET mtd_geographical_area =
catalogdb.country_standard_eureka_shape.iso2_code FROM
catalogdb.country_standard_eureka_shape WHERE ST_Intersects(catalogdb.t_well.point,
catalogdb.country_standard_eureka_shape.geom);
Maintenant je souhaiterai que ce champ s'alimente automatiquement dès qu'un
nouveau objet point est créé dans la table "t_well".
Je pense donc utiliser le trigger et une fonction pour l'exécuter. Voici le script
utilisé:
CREATE OR REPLACE FUNCTION catalogdb.maj_well()
RETURNS trigger AS
$BODY$BEGIN
UPDATE catalogdb.t_well SET mtd_geographical_area =
catalogdb.country_standard_eureka_shape.iso2_code FROM
catalogdb.country_standard_eureka_shape WHERE ST_Intersects(catalogdb.t_well.point,
catalogdb.country_standard_eureka_shape.geom);
return new;
END;
$BODY$ LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION catalogdb.maj_well()
OWNER TO postgres;
CREATE TRIGGER trigger_maj_well
BEFORE UPDATE
ON catalogdb.t_well
FOR EACH ROW
EXECUTE PROCEDURE catalogdb.maj_well();
Ma fonction est bien compilée et mon déclencheur bien créé.
Le problème est que lorsqu'un nouveau point est rajouté dans la table
"t_well', toutes les valeurs du champ "mtd_geographical_area" passent à
"Null" et les valeurs du champs "iso2_code" de la table
"catalogdb.country_standard_eureka_shape" ne sont pas récupérées.
Quelqu'un aurait-il une idée?
Merci d'avance pour votre aide
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=336131#p336131
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