Bonjour à tous !
Voila, je me lance dans le developpement côté base de données depuis peu de temps.
(Ya deux jour en faite :s)
J'ai une petite application de réservation de salle de réunion Access (Pas glorieu:/),
cependant je souhaite la passer sous SQL Serveur avec une interface Web.
Pour éviter de faire les contrôles au niveau de l'application je pensais les faire côté base de données à l'aide des trigger et procédure stockées.
Voila mon premier triggers :
Il contrôle si la réservation en cour chevauche ou non une réservation déjà enregistré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
36
37
38
39
40
41
42
43 CREATE TRIGGER TRIGG_PLAGE ON OCCUPER FOR INSERT AS BEGIN DECLARE @MOT AS CHAR(250); SELECT @MOT=Occuper.Motif FROM OCCUPER,INSERTED WHERE INSERTED.ID_Reservation<>Occuper.ID_Reservation AND INSERTED.IdentifiantSalle = Occuper.IdentifiantSalle AND DATEDIFF(day,Occuper.DateRes,Inserted.DateRes) = 0 AND ( ( Inserted.HDeb>=Occuper.HDeb AND Inserted.HDeb<Occuper.HFin ) OR ( Inserted.HFin>Occuper.HDeb AND Inserted.HFin<=Occuper.HFin ) OR ( Inserted.HDeb<=Occuper.HDeb AND Inserted.HFin>=Occuper.HFin ) ) IF LEN(@MOT)>0 BEGIN SET @MOT='Il y à déjà une réservation ce jour la' RAISERROR 34000 @MOT ROLLBACK TRANSACTION END END
Je me suis rendu compte de deux choses :
1) Si les paramètres que je me sert dans ma requete ne sont pas renseigner, le trigger ne sert plus à rien.
Comment peut-on Vérifier si tous les champ de la requete d'insertion sont renseignés au niveau de la base de données(Si c'est possible et conseiller)?
2) Pourquoi je dois exclure l'enregistrement que j'insère ? Si je l'exclus pas, impossible de faire un enregistrement.
Merci de vos réponse future (Si il y en a)
Partager