Message posté par : Demonshine
----------------------------------------
Bonjour,
Lors de la mise à jour ou insertion d'un élément dans un table "nom" de type
ponctuel, je souhaite récupérer certaines informations de la table "zone" de
type polygone à l'intérieur de laquelle chaque point est contenu. J'ai donc essayé
de mettre en place un trigger entre ces deux tables en utilisant "st_within"
pour faire le lien entre les deux tables. Le problème est que mon trigger ne marche pas,
soit il me remplit toutes mes lignes dans ma table "nom" avec les valeurs de la
colonne spécifiée, alors que je veux que ce soit juste la ligne modifiée ou créée qui
soit remplie. Ou bien si dans ma condition IF je met "TG_OP="update"
j'ai une boucle infinie. J'ai essayé d'utiliser la variable new mais
j'obtiens une erreur comme quoi la variable new n'existe pas. Voici mon code :
-----------------
Code :
CREATE OR REPLACE FUNCTION maj_nom()
RETURNS trigger AS
$BODY$
DECLARE
BEGIN
IF /*TG_OP = 'UPDATE' or */ TG_OP='INSERT' THEN
raise notice 'update_insert';
/* MAJ de la table "nom" : sur la colonne graphie. J'attribue la valeur
toponyme de la table "zone"
sur la colonne nature, j'attribue la valeur nature de la table "zone"
sur la colonne cleabs, j'attribue la valeur cleabs de la table "zone"
*/
UPDATE set graphie = toponyme,
nature=zone.nature,
cleabs=zone.cleabs
/* Je récupère la table "zone" car je l'utilise au dessus */
FROM zone
/* Je cherche la zone qui contient le toponyme dans la table : "nom" */
WHERE st_within(NEW.geom, zone.geom);
END IF;
return NEW;
END;
$BODY$
LANGUAGE plpgsql;
CREATE TRIGGER trigger_maj_nom
AFTER INSERT OR UPDATE
ON nom
FOR EACH ROW
EXECUTE PROCEDURE maj_nom();
-----------------
Merci d'avance pour votre aide,
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=345270#p345270
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