Bonjour,
je suis en train de travailler sur la conception d'une base de données qui représente le contenu d'un stock d’ingrédients et sa consommation :
J'ai créé toutes les tables et vues nécessaires et deux triggers :
Table Ingredient : objet, categorie
Table Conso : consoID, surnom, objet, quantite
Table Stock : objet, quantite
Table Courses : objet
Le premier trigger sert à gérer la diminution des stocks : il est normal que lorsqu'un ingrédient est consommé, il faille le retirer des stocks. Ce trigger se déclenchera sur une insertion dans la table Conso.
=> Celui-là marche bien.
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 CREATE TRIGGER testTrigger BEFORE INSERT ON Conso FOR EACH ROW BEGIN DECLARE qtConso integer; DECLARE prodConso varchar(50); DECLARE restant integer; DECLARE reste integer; SET qtConso = NEW.quantite; SET prodConso = NEW.objet; SELECT quantite INTO restant FROM Stock WHERE objet = prodConso; SET reste = restant - qtConso; IF reste<0 THEN SET NEW.quantite = restant; UPDATE Stock SET quantite = 0 WHERE objet = prodConso; ELSE UPDATE Stock SET quantite = reste WHERE objet = prodConso; END IF END
Le deuxième trigger ajoutera dans la table "Courses" les ingrédients lorsque leur stock atteindra 0. Dans ce cas :
ET VOILA
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 CREATE DEFINER=`root`@`localhost` TRIGGER `stock_AUPD` AFTER UPDATE ON `stock` REFERENCING NEW ROW AS new FOR EACH ROW WHEN ((SELECT quantite FROM stock WHERE objet = new.objet) <= 0 ) INSERT INTO `courses`VALUES(new.objet), pourriez-vous jeter un coup d'œil pour des rectifications à faire concernant le deuxième et le premier trigger ?
Partager