ПочатиПочніть безкоштовно

Перевірка запасів перед оформленням замовлень

Кілька разів клієнти оформляли замовлення на товари, коли в компанії не було достатньо запасів, щоб їх виконати.

Цю проблему легко вирішити, додавши новий тригер з умовною логікою для його дій.

Тригер має спрацьовувати, коли до таблиці Orders додаються нові рядки, і перевіряти, чи має компанія достатній запас вказаних товарів, щоб виконати ці замовлення.

Якщо запасів достатньо, тригер виконає ту саму операцію INSERT, що його запустила, — тільки цього разу значення буде взято зі спеціальної таблиці inserted.

Ця вправа є частиною курсу

Створення та оптимізація тригерів у SQL Server

Переглянути курс

Інструкції до вправи

  • Додайте новий тригер, що спрацьовує для операторів INSERT і перевіряє, чи можна виконати кількість у замовленні за рахунок поточного запасу.
  • Якщо запасів недостатньо — підніміть помилку. Інакше виконайте INSERT, використавши спеціальну таблицю inserted.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

-- 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;
Редагувати та запускати код