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 :

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;
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.

Merci pour votre aide !

SD