Procedures Triggers SQL
Procedures Triggers SQL
Procedures Triggers SQL
1. Introduction Générale
Les bases de données relationnelles modernes doivent non seulement stocker des données,
mais aussi les gérer efficacement. Les procédures stockées permettent d’automatiser les
tâches répétitives tandis que les triggers offrent des solutions pour réagir automatiquement
aux modifications dans les tables.
DELIMITER //
CREATE PROCEDURE UpdateStock (IN productId INT, IN quantity INT)
BEGIN
IF quantity > 0 THEN
UPDATE Products SET Stock = Stock + quantity WHERE ProductID = productId;
ELSE
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Quantité invalide';
END IF;
END;
//
DELIMITER ;
DELIMITER //
CREATE PROCEDURE ListHighValueOrders()
BEGIN
DECLARE orderId INT;
DECLARE done INT DEFAULT 0;
DECLARE cur CURSOR FOR SELECT OrderID FROM Orders WHERE TotalAmount > 1000;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN cur;
read_loop: LOOP
FETCH cur INTO orderId;
IF done THEN
LEAVE read_loop;
END IF;
INSERT INTO HighValueOrdersLog (OrderID) VALUES (orderId);
END LOOP;
CLOSE cur;
END;
//
DELIMITER ;
4. Exercices Pratiques
Exercice 1 : Procédure Stockée pour Gestion de Stock.
Créer un trigger qui enregistre dans une table OrderAudit toutes les commandes annulées.
Exercice 3 : Prévention avec Trigger.
DELIMITER //
CREATE PROCEDURE ReduceStock (IN productId INT, IN quantity INT)
BEGIN
DECLARE currentStock INT;
SELECT Stock INTO currentStock FROM Products WHERE ProductID = productId;
Corrigé de l’exercice 2 :
Corrigé de l’exercice 3 :