Bonjour,
J'utilise un WEB SIG (cartographie) me permettant notamment de mettre à jour des objets graphiques.
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 :
Lors de la mise à jour de l'objet graphique via l'applicatif 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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 DECLARE 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;
Merci pour votre aide !
SD
Partager