Bonjour,
un extrait de la table log :
un extrait de la table us :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 gid alti numlog 1 79.55 1 2 79.65 2
Avec un trigger sur us, je souhaite mettre à jour alti_sommet and alti_base avec le calcul entre ().
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 gid numlog numus sommet base alti_sommet alti_base 1 1 1000 0 0.25 (79.55-0) (79.55-0.25) 2 1 1001 0.25 0.39 (79.55-0.25)(79.55-0.39) 3 1 1002 0.39 0.59 (79.55-0.39) ... 4 2 1000 0 0.15 (79.65-0) 5 2 1001 0.15 0.40 (79.65-0.15)
J'ai crée :
et le trigger :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 create or replace function activite.calcul_alti_us() returns trigger as $body$ BEGIN update us set (alti_base, alti_sommet) = (l.alti - base, l.alti-sommet) from log l where us.numlog = l.numlog ; return NEW ; END ; $body$ language 'plpgsql' ;
Donc ca fonctionne pour toute la table, toujours ça.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 CREATE TRIGGER trg_calcul_alti_us AFTER insert ON us FOR EACH ROW EXECUTE PROCEDURE activite.calcul_alti_us();
Mais je ne souhaite pas qu'à chaque insert dans log, toute la table us soit mise à jour.
Et là je n'arrive pas à ne faire travailler le trigger uniquement sur les linges insérées soit sur le ou les numlog nouvellement insérés dans us.
J'ai une mauvaise utilisation de NEW à priori.
Des pistes ? Merci
Partager