Kontrollera lagersaldot innan order läggs
Vid flera tillfällen har kunder lagt beställningar på produkter som företaget inte haft tillräckligt i lager för att leverera.
Det här problemet går enkelt att lösa genom att lägga till en ny trigger med villkorsstyrd logik.
Triggern ska aktiveras när nya rader läggs till i tabellen Orders och kontrollera om företaget har tillräckligt i lager för att uppfylla beställningarna.
Om lagersaldot räcker ska triggern utföra samma INSERT-operation som utlöste den — men den här gången hämtas värdena från den speciella tabellen inserted.
Den här övningen är en del av kursen
Bygga och optimera triggers i SQL Server
Övningsinstruktioner
- Lägg till en ny trigger som aktiveras för
INSERT-satser och kontrollerar om beställd kvantitet kan uppfyllas av det aktuella lagersaldot. - Skicka ett fel om lagret inte räcker till. Annars utför du en
INSERTmed hjälp av den speciella tabelleninserted.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
-- 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;