Pages: 1
- Sujet précédent - Probleme de mise à jour avec un trigger sur une base postGIS - Sujet suivant
#1 Tue 08 January 2013 14:21
- mcdelay
- Participant occasionnel
- Lieu: Lille
- Date d'inscription: 19 Sep 2005
- Messages: 25
Probleme de mise à jour avec un trigger sur une base postGIS
Bonjour,
J'essaye de mettre à jour deux colonnes d'une table par l'intermédiaire de trigger mais je rencontre un souci avec la mise à jour des colonnes quand un objet graphique est crée. Voici le trigger :
Code:
DECLARE flag VARCHAR(32); BEGIN IF(TG_OP='INSERT') THEN -- INSERT INTO public.fon_parcelle_transaction_cavm (ogc_fid,the_geom) VALUES (NEW."ROWID",NEW."g"); UPDATE cav_postgis.sb_data_309 SET superficie = area(NEW.g) WHERE rowid=NEW.rowid; UPDATE cav_postgis.sb_data_309 SET commune = public.cad_commune.commune FROM public.cad_commune WHERE (ST_IsValid(NEW.g) AND st_within(ST_PointOnSurface(NEW.g),public.cad_commune.the_geom)) AND rowid = NEW.rowid; END IF; IF(TG_OP='UPDATE') THEN UPDATE cav_postgis.sb_data_309 SET superficie = area(NEW.g) WHERE rowid=NEW.rowid; UPDATE cav_postgis.sb_data_309 SET commune = public.cad_commune.commune FROM public.cad_commune WHERE (ST_IsValid(NEW.g) AND st_within(ST_PointOnSurface(NEW.g),public.cad_commune.the_geom)) AND rowid = NEW.rowid; END IF; SET dynmap_pgconf.state_trigger_beetween_schemas=''; RETURN NEW; END;
Lors de la mise à jour de l'objet graphique les colonnes "superficie" et "commune" se mettent bien à jour. Par contre c'est lors de l'insertion d'un objet que les colonnes ne se mettent pas à jour. Je pense que je ne maitrise pas trop le comportement de la fonction lors de l'insertion d'un objet. Je souhaite , quand l'objet est créé, mettre à jour les colonnes, j'ai pour cela créé un trigger qui se déclenche après la création de l'objet (AFTER) où les évènements suivants insert update delete sont permis et qui utilise la fonction ci dessus.
Merci pour votre aide !
SD
Hors ligne
#2 Tue 08 January 2013 16:22
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: Probleme de mise à jour avec un trigger sur une base postGIS
Bonjour,
De ce que je comprends, un AFTER trigger ne permet pas de faire de la mise a jour de données insérées: l'insertion a deja eu lieu.
Il faut declarer le trigger comme BEFORE.
Nicolas
Hors ligne
#3 Tue 08 January 2013 17:16
- mcdelay
- Participant occasionnel
- Lieu: Lille
- Date d'inscription: 19 Sep 2005
- Messages: 25
Re: Probleme de mise à jour avec un trigger sur une base postGIS
Merci beaucoup pour la réponse. Bon, j'avais déjà essayé un before mais ça n'avait pas fonctionné ...
Hors ligne
Pages: 1
- Sujet précédent - Probleme de mise à jour avec un trigger sur une base postGIS - Sujet suivant