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