Vérifier le stock avant de passer les commandes
À plusieurs reprises, des clients ont passé des commandes pour des produits alors que l'entreprise n'avait pas assez de stock pour les honorer.
Ce problème se règle facilement en ajoutant un nouveau déclencheur avec une logique conditionnelle pour ses actions.
Le déclencheur doit s'exécuter lorsque de nouvelles lignes sont ajoutées à la table Orders et vérifier si l'entreprise dispose d'un stock suffisant des produits indiqués pour exécuter ces commandes.
S'il y a suffisamment de stock, le déclencheur effectuera ensuite la même opération INSERT que celle qui l'a déclenché — sauf que, cette fois, les valeurs seront prises dans la table spéciale inserted.
Cette activité fait partie du cours
Création et optimisation de déclencheurs dans SQL Server
Instructions de l’exercice
- Ajoutez un nouveau déclencheur qui s'exécute pour les instructions
INSERTet vérifie si la quantité commandée peut être couverte par le stock actuel. - Levez une erreur s'il n'y a pas assez de stock. Sinon, effectuez un
INSERTen utilisant la table spécialeinserted.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
-- Create a new trigger to confirm stock before ordering
CREATE TRIGGER ConfirmStock
ON Orders
INSTEAD OF ___
AS
IF EXISTS (SELECT *
FROM Products AS p
INNER JOIN inserted AS i ON i.Product = p.Product
WHERE p.Quantity < i.Quantity)
BEGIN
___ ('You cannot place orders when there is no stock for the order''s product.', 16, 1);
END
ELSE
BEGIN
INSERT INTO Orders (OrderID, Customer, Product, Price, Currency, Quantity, WithDiscount, Discount, OrderDate, TotalAmount, Dispatched)
SELECT OrderID, Customer, Product, Price, Currency, Quantity, WithDiscount, Discount, OrderDate, TotalAmount, Dispatched FROM ___;
END;