Bonjour,
Je travaille sur une base SQLite avec une partie Géométrie (une colonne bien à part).
Je dispose d'une couche de lignes extrait_hyl qui va pas mal évoluer et je souhaiterai tracer ces évolutions dans une table l_hyl_evol, qu'elles soient géométriques et/ou attributaires.
Je me suis donc tourné vers les triggers.
J'ai donc déjà préparé des triggers permettant de récupérer les nouveaux objets et ceux qui ont été supprimés dans l_hyl_evol.
Maintenant, j'aimerai tracer les modifications des attributs et de la géométrie.
Mais j'aimerai isoler ces 3 cas :
- les seuls changements d'attribut
- les seuls changements de géométrie
- les changements d'attributs et de géométrie
Je pensais donc alimenter la même table l_hyl_evol en renseignant un champ sur le type de changement (modification géométrique et/ou attributaire).
Voici ce que ça donne pour l'instant :
Trigger pour un changement attributaire :
Ce code fonctionne.
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 CREATE TRIGGER update_hyl AFTER UPDATE OF SENS, CODE_HYDRO, C_HYD_CDO, C_ENT_SURF, FPKH, TPKH, CODE_ZONE ON extrait_hyl WHEN new.Geometry = old.geometry and (old.sens <> new.sens OR old.code_hydro <> new.code_hydro OR old.c_hyd_cdo <> new.c_hyd_cdo OR old.c_ent_surf <> new.c_ent_surf OR old.fpkh <> new.fpkh OR old.tpkh <> new.tpkh OR old.code_zone <> new.code_zone) BEGIN INSERT INTO l_hyl_evol(id_bdcarth, type_modif, date_modif, date_geom, sens, code_hydro, c_hyd_cdo, c_ent_surf, fpkh, tpkh, code_zone, Geometry) VALUES (OLD.id_bdcarth, 'Modification attributaire', datetime('now'), Null, OLD.sens, OLD.code_hydro, OLD.c_hyd_cdo, OLD.c_ent_surf, OLD.fpkh, OLD.tpkh, OLD.code_zone, OLD.Geometry); END;
Trigger pour une modification géométrique (ne fonctionne pas) :
Avez-vous des idées ?
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 CREATE TRIGGER update_geom AFTER UPDATE OF Geometry ON extrait_hyl WHEN old.sens = new.sens AND old.code_hydro = new.code_hydro AND old.c_hyd_cdo = new.c_hyd_cdo AND old.c_ent_surf = new.c_ent_surf AND old.fpkh = new.fpkh AND old.tpkh = new.tpkh AND old.code_zone = new.code_zone BEGIN INSERT INTO l_hyl_evol(id_bdcarth, type_modif, date_modif, date_geom, sens, code_hydro, c_hyd_cdo, c_ent_surf, fpkh, tpkh, code_zone, Geometry) VALUES (OLD.id_bdcarth, 'Modification géométrique', Null, datetime('now'), OLD.sens, OLD.code_hydro, OLD.c_hyd_cdo, OLD.c_ent_surf, OLD.fpkh, OLD.tpkh, OLD.code_zone, OLD.Geometry); END;
Je sais pas si j'ai été très clair mais je le serai davantage si besoin.
Merci beaucoup et bonne journée
Partager