Začněte nyníZačněte zdarma

Kontrola skladu před zadáním objednávky

Stávalo se, že zákazníci zadali objednávky na produkty, které firma neměla dostatečně naskladněné.

Tento problém lze snadno vyřešit přidáním nového triggeru s podmíněnou logikou.

Trigger by se měl spustit při přidání nových řádků do tabulky Orders a zkontrolovat, zda má firma dostatek zásob daných produktů k splnění objednávky.

Pokud jsou zásoby dostatečné, trigger provede stejnou operaci INSERT jako ta, která ho spustila—tentokrát však hodnoty načte ze speciální tabulky inserted.

Toto cvičení je součástí kurzu

Tvorba a optimalizace triggerů v SQL Serveru

Zobrazit kurz

Pokyny k cvičení

  • Přidej nový trigger, který se spustí při příkazech INSERT a zkontroluje, zda aktuální stav skladu pokryje objednané množství.
  • Pokud zásoby nestačí, vyvolej chybu. V opačném případě proveď INSERT s využitím speciální tabulky inserted.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

-- 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;
Upravit a spustit kód