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 : 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
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 !!!