[sql2005]trigger qui s'éxecte sur toutes les lignes
bonjour, j'ai une base de données pour gerer une compagnie aerienne
j'ai les 2 tables suivantes :
vol(id_vol, placedispo1,placedispo2), placedispo1 et placedispo2 représentent le nombre de place disponible en 1ere classe et en 2eme classe
client(id_cliennt,nom,prenom,id_vol,type_billet) si type_billet ='ok1' alors le client a reserver en 1ereclasse , sinon si type_billet= 'ok2' alors le client a reserver en 2eme classe
j'ai écrit un trigger qui décrémente les cases placedispo1 ou pacedispo2en fonction du type de billet que le client a choisi
voici mon trigger
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 26 27 28 29 30 31 32 33 34 35
| IF EXISTS (SELECT name
FROM sysobjects
WHERE name = 'update_places1' and type = 'tr')
drop trigger update_places1
go
CREATE TRIGGER UPDATE_PLACES1
ON client
FOR INSERT
AS
declare @ty varchar(50)
SELECT @ty = type_billet FROM client
IF (@ty = 'ok1')
begin
SELECT * FROM VOL
UPDATE vol
SET PLACES_DISPO_1 = PLACES_DISPO_1 - 1
FROM CLIENT
WHERE client.num_vol = vol.num_vol
end
IF (@ty = 'ok2')
begin
SELECT * FROM vol
UPDATE vol
SET PLACES_DISPO_2 = PLACES_DISPO_2 - 1
FROM CLIENT
WHERE client.num_vol = vol.num_vol
end
GO |
mon problème est le suivant : supposons que j'ai les vols 1,2,3 , si j'ajoute un client sur le vol 1 avec type_billet ='ok1' ,tout se passe normalement j'ai la case placedispo1 qui est décrémentée !!
mais si j'ajoute par la suite un autre client sur le vol 2 avec type_billet = ok2
alors la j'ai la case placedispo1 du vol2 qui est décrémenté mais celle du vol 1 aussi est décrémenté , alors que normalement c'est celle du vol 2 seulement qui est decrementé
on dirait que le trigger s'éxecute sur tout les lignes ou il a deja été éxécuté
merci de votre aide !!!