CommencerCommencer gratuitement

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

Afficher le cours

Instructions

  • Ajoutez un nouveau déclencheur qui se déclenche pour les instructions INSERT et 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 INSERT en utilisant la table spéciale inserted.

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;
Modifier et exécuter le code