CommencezCommencez gratuitement

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

Voir le cours

Instructions de l’exercice

  • Ajoutez un nouveau déclencheur qui s'exécute 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 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;
Modifier et exécuter le code