Kom igångKom igång gratis

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

Visa kurs

Ö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 INSERT med hjälp av den speciella tabellen inserted.

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;
Redigera och kör kod