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