Message posté par : Nicolas Ribot
----------------------------------------
Bonjour,
Votre message d'erreur indique une erreur de syntaxe: il manque un ";" apres
l'instruction create trigger...
Il faut d'abord définir la fonction du trigger, puis définir le trigger utilisant
cette fonction.
Si on commence par définir le trigger, la fonction à laquelle on fait référence dans la
commande (ici update_nom_site_observation) n'existe pas encore dans la BD =>
nouvelle erreur.
Ensuite, le code de la fonction du trigger n'est pas bon: dans un trigger, il faut
référencer la ligne courante (FOR EACH ROW = la fonction est appelée pour chaque ligne du
trigger) avec les variable NEW et OLD
(
https://www.postgresql.org/docs/12/plpgsql-trigger.html).
Attention aussi: vous mettez un ";" derriere chaque ligne sql dans le code de la
fonction: il ne faut mettre un ";" qu'apres la fin du SQL complet.
qq chose comme:
-----------------
Code :
BEGIN
select s.nom_site from site s join observation o on st_overlaps(NEW.geom, o.geom) into
NEW.nom_site;
return NEW;
END;
-----------------
Enfin, attention à st_overlaps: ca renvoie faux si un objet est entièrement contenu dans
un autre. il faut alors utiliser st_contains (ou st_within).
(
http://postgis.net/docs/ST_Overlaps.html)
Nicolas
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=334977#p334977
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