주문 전 재고 확인
여러 번 고객이 주문을 넣었는데, 회사에 그 주문을 처리할 만큼의 재고가 충분하지 않았던 적이 있었습니다.
이 문제는 동작에 조건부 로직을 가진 새 트리거를 추가하면 쉽게 해결할 수 있어요.
트리거는 Orders 테이블에 새 행이 추가될 때 실행되어, 지정된 제품의 주문을 처리할 만큼의 재고가 회사에 충분한지 확인해야 합니다.
재고가 충분하면, 트리거는 자신을 실행시킨 것과 동일한 INSERT 작업을 수행하되—이번에는 값을 inserted 특수 테이블에서 가져와서 수행합니다.
이 연습은 강의의 일부입니다
SQL Server에서 트리거 구축 및 최적화
연습 안내
INSERT문에 대해 실행되고, 주문 수량을 현재 재고로 충족할 수 있는지 확인하는 새 트리거를 추가하세요.- 재고가 부족하면 오류를 발생시키세요. 그렇지 않으면
inserted특수 테이블을 이용해INSERT를 수행하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
-- 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;