Zacznij terazZacznij za darmo

Weryfikacja stanu magazynowego przed złożeniem zamówienia

Zdarzało się, że klienci składali zamówienia na produkty, których firma nie miała wystarczającej ilości w magazynie.

Ten problem można łatwo rozwiązać, dodając nowy wyzwalacz z logiką warunkową.

Wyzwalacz powinien uruchamiać się przy dodawaniu nowych wierszy do tabeli Orders i sprawdzać, czy firma dysponuje wystarczającą ilością danego produktu, aby zrealizować zamówienie.

Jeśli stan magazynowy jest wystarczający, wyzwalacz wykona tę samą operację INSERT, co ta, która go uruchomiła – tym razem jednak wartości zostaną pobrane ze specjalnej tabeli inserted.

To ćwiczenie jest częścią kursu

Tworzenie i optymalizacja triggerów w SQL Server

Zobacz kurs

Instrukcje do ćwiczenia

  • Dodaj nowy wyzwalacz, który uruchamia się dla instrukcji INSERT i sprawdza, czy ilość zamówionego towaru może zostać zrealizowana na podstawie aktualnego stanu magazynowego.
  • Zgłoś błąd, jeśli stan magazynowy jest niewystarczający. W przeciwnym razie wykonaj operację INSERT, korzystając ze specjalnej tabeli inserted.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

-- 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;
Edytuj i uruchom kod