Vérifier le stock avant de passer des 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 peut être facilement résolu en ajoutant un nouveau déclencheur avec une logique conditionnelle pour ses actions.
Le déclencheur doit se déclencher lorsque de nouvelles lignes sont ajoutées à la table Orders et vérifier si l’entreprise dispose d’un stock suffisant des produits concerné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é — mais cette fois, les valeurs seront prises depuis la table spéciale inserted.
Cet exercice fait partie du cours
Créer et optimiser des déclencheurs dans SQL Server
Instructions
- Ajoutez un nouveau déclencheur qui se déclenche 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 cet exemple de code.
-- 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;