Bonjour à tous
J'ai besoin d'une base de données pour gérer le prêt de matériels (10-15 gros maximum) ayant tous la même utilité, même s'il peuvent être de modèle ou marque différents.
Le but principal étant de savoir si du matériel est disponible pour un prêt surtout pour la semaine en cours et éventuellement la ou les suivantes et de savoir à qui il a été prêté.
Le matériel est prêté (éventuellement avec une caution), mais la durée de prêt n'est pas importante (normalement 2-3 jours maximum). La date de fin de prêt doit être celle quand le matériel est rendu plutôt que celle quand le matériel doit être rendu.
Il faut retrouver les coordonnées de l'emprunteur, pouvoir le contacter et lui demander de rapporter le matériel.
Alors j'ai créé mes tables, merci à Seabs et SQLpro pour leur aide :
Table client:
Table materiel:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 CREATE TABLE CLIENT (client_id INT NOT NULL PRIMARY KEY, nom CHAR(32), prenom VARCHAR(25), adresse VARCHAR(100), cp CHAR(8), ville CHAR(32), tel CHAR(20));
Table prêt:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 CREATE TABLE MATERIEL (materiel_id INT NOT NULL PRIMARY KEY, modele VARCHAR(32), marque VARCHAR(32));
J'aurais alors besoin d'aide pour construite la contrainte de non recouvrement de période sous forme de déclencheur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 CREATE TABLE PRET (pret_id INT NOT NULL PRIMARY KEY, date_debut date NOT NULL, date_fin date, client_id INT NOT NULL, materiel_id INT NOT NULL, FOREIGN KEY (client_id) REFERENCES CLIENT (client_id), FOREIGN KEY (materiel_id) REFERENCES MATERIEL (materiel_id), CONSTRAINT CK_PRET_DATES CHECK ((date_fin >= date_debut) OR date_fin IS NULL));
J'ai une erreur de syntaxe sur ou près de IF
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 CREATE TRIGGER E_IU_PRET BEFORE INSERT OR UPDATE ON PRET WHEN IF EXISTS(SELECT * FROM PRET AS P WHERE EXISTS(SELECT * FROM inserted AS i WHERE P.materiel_id = i.materiel_id AND (i.date_debut BETWEEN P.date_debut AND P.date_fin OR i.date_fin BETWEEN P.date_debut AND P.date_fin))) ROLLBACK;
Partager