Difficultés avec un trigger
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...
Code:
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 |
Mon problème est que lorsque l'update porte sur plusieurs lignes, une seule est supprimée dans la seconde table.
Je veux éviter d'utiliser un curseur, mais jee suis un peu perdu là, donc si vous pouvez m'éclairer ce serait cool :ccool:
Merci par avance et bonne journée.