Bonjour tout le monde !
je viens vers vous car j'ai quelques difficultés avec mon trigger
Ce que je souhaite faire :
J'ai une table unites_stockage identifiée par un triplet cli/sce/us (varchar/varchar/int). Cette table contient une colonne "st" (varchar(2)).
Lorsque la colonne st de cette table est mise à jour avec la valeur 'X', je veux supprimer la ligne correspondante dans une autre table nommée "DemandeDestruction".
J'ai donc créé le trigger ci-dessous...
Mon problème est que lorsque l'update porte sur plusieurs lignes, une seule est supprimée dans la seconde table.
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 CREATE TRIGGER MAJSt ON UNITES_STOCKAGE AFTER UPDATE AS -- variables utilisées declare @status varchar(2), @cli varchar(10), @sce varchar(15), @us int; -- si st mis à jour if UPDATE(ST) begin -- récupération de la valeur mise à jour select @status=UNITES_STOCKAGE.st, @cli=UNITES_STOCKAGE.cli, @sce=UNITES_STOCKAGE.sce, @us=UNITES_STOCKAGE.us from UNITES_STOCKAGE, deleted d where UNITES_STOCKAGE.cli=d.cli and UNITES_STOCKAGE.sce=d.sce and UNITES_STOCKAGE.us=d.us; begin -- si cette valeur est X... if(@status = 'X') begin -- ... suppression de la ligne correspondante delete from DemandeDestruction where DemandeDestruction.cli=@cli and DemandeDestruction.sce=@sce and DemandeDestruction.us=@us; end end end
Je veux éviter d'utiliser un curseur, mais jee suis un peu perdu là, donc si vous pouvez m'éclairer ce serait cool
Merci par avance et bonne journée.
Partager