Bonjour,
j'ai deux tables T1 et T2, j'ai besoin d'agir sur une ligne de T1 dès qu'on supprime une ligne de T2. Cett action dépend d'une autre table (T3) et de la ligne qui vient d'être supprimé dans T2 : dans certains cas je fais juste un update dans T1, et dans d'autres je fais aussi un delete.
voici ce que j'ai écrit :
Cela marche pour la suppression d'une seule ligne, mais évidemment pas pour la suppression de plusieurs ligne.
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 CREATE TRIGGER [tg_deleteBCitem] ON [T2] FOR DELETE AS BEGIN DECLARE @nor varchar(15), @article varchar(20), @qtite int SET @nor=(SELECT CHAMP1 FROM Deleted) SET @article=(SELECT CHAMP2 FROM Deleted) SET @qtite=(SELECT SUM(CHAMP3) FROM [T3] WHERE (CHAMP2=@article AND CHAMP1=@nor)) IF (@qtite IS NULL) DELETE FROM [T1] WHERE ( CHAMP4=@nor AND CHAMP5=@article) ELSE UPDATE [T1] SET CHAMP6=@qtite WHERE ( CHAMP4=@nor AND CHAMP5=@article) END
Ce qui serait super c'est qu'il existe une fonction du genre "For each row",
autrement je ne vois pas comment ré-écrire mon trigger.![]()
Quand pensez-vous ?
merci de vos conseils.
PS: je suis sur MS Server
Partager