Bonjour
J'ai un problème lors de l'exécution d'un trigger sur SQL Server 2005 Express Edition.
Le voici:
Ce trigger devrait normalement permettre, suite à la mise à jour du champ numProjet, de supprimer l'ancien projet si ce dernier n'est plus utilisé dans la base (clé étrangère) ainsi que faire la même chose pour la table interlocuteur et commercial. Or, même si je modifie le numéro de projet (ou un autre) sur ma table RENCONTRER et que l'ancien numéro n'est plus utilisé, la suppression ne s'effectue pas. Ce qui est le plus bizarre, c'est que j'ai presque le même trigger after delete sur cette table et que celui-ci fonctionne très bien. Je n'y comprend rien!
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 create trigger tr_suppr_rencontrer_update on RENCONTRER after update as declare @nbProjet as smallint if update(numProjet) begin declare @numProjet as int select @numProjet=numProjet from inserted select @nbProjet=count(numProjet) from RENCONTRER where numProjet=@numProjet if (@nbProjet=0) begin delete from PROJET where numProjet=@numProjet end; end; if update(numCommercial) begin declare @estActif as char(1) declare @numCommercial as int select @numCommercial=numCommercial from inserted select @nbProjet=count(numProjet) from RENCONTRER where numCommercial=@numCommercial select @estActif=estActif from COMMERCIAL where numCommercial=@numCommercial if (@nbProjet=0)and(@estActif='0') begin delete from COMMERCIAL where numCommercial=@numCommercial end; end; if update(numInterlocuteur) begin declare @numInterlocuteur as int declare @nbInterlocuteur as smallint select @numInterlocuteur=numInterlocuteur from inserted select @nbInterlocuteur=count(numInterlocuteur) from RENCONTRER where numInterlocuteur=@numInterlocuteur if (@nbInterlocuteur=0) begin delete from INTERLOCUTEUR where numInterlocuteur=@numInterlocuteur end; end;
Merci d'avance si vous arrivez à résoudre mon problème!
Partager