Bonjour,
J'ai 2 tables :
-chercheur(num_chercheur,specialite_chercheur)
-specialite(acronyme,nb_chercheurs)
J'aimerais avoir un trigger qui déclenche une mise à jour du champ nb_chercheurs lors d'une mise à jour de la table chercheur (Update,Insert ou delete).
La commande For Each Row ne fonctionnant pas sous MS SQL Server, j'aimerais savoir commande parcourir chacune des lignes de la table chercheur afin de compter le nombre de chercheur affecté à une spécialité ?
J'ai créé le trigger suivant, mais ca ne fonctionne pas ! Qq1 peut-il m'aider ?
Merci d'avance
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
31
32 CREATE TRIGGER nb_chercheur ON chercheur FOR INSERT,DELETE,UPDATE AS --ouverture curseur sur table chercheur declare Cur_NumChercheur cursor for select num_chercheur, specialite_chercheur from chercheur order by specialite_chercheur,num_chercheur declare @numChercheur int, @specialite nvarchar (50), @nb int, @spe nvarchar(50) open Cur_NumChercheur fetch Cur_NumChercheur into @numChercheur, @spe set @nb=0 while @@fetch_status=0 begin set @spe=@specialite while @spe=@specialite begin set @nb=@nb+1 update specialite set nb_chercheurs=@nb where acronyme=@specialite end fetch Cur_NumChercheur into @numChercheur, @spe set @spe=@specialite end close Cur_NumChercheur deallocate Cur_NumChercheur
Partager