Aan de slagGa gratis aan de slag

Voorraad controleren voordat je bestellingen plaatst

Meerdere keren hebben klanten bestellingen geplaatst voor producten terwijl het bedrijf niet genoeg voorraad had om deze te leveren.

Dit probleem is eenvoudig op te lossen door een nieuwe trigger toe te voegen met voorwaardelijke logica voor de acties.

De trigger moet afgaan wanneer er nieuwe rijen aan de tabel Orders worden toegevoegd en controleren of het bedrijf voldoende voorraad heeft van de opgegeven producten om die bestellingen te leveren.

Als er voldoende voorraad is, voert de trigger vervolgens dezelfde INSERT-bewerking uit als degene die hem activeerde—alleen worden de waarden nu gehaald uit de speciale tabel inserted.

Deze oefening maakt deel uit van de cursus

Triggers in SQL Server bouwen en optimaliseren

Cursus bekijken

Oefeninstructies

  • Voeg een nieuwe trigger toe die afgaat bij INSERT-instructies en controleert of de bestelde hoeveelheid kan worden geleverd uit de huidige voorraad.
  • Geef een foutmelding als er onvoldoende voorraad is. Voer anders een INSERT uit met behulp van de speciale tabel inserted.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

-- 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;
Code bewerken en uitvoeren