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
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
INSERTuit met behulp van de speciale tabelinserted.
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;