Kiểm tra tồn kho trước khi đặt hàng
Nhiều lần, khách hàng đã đặt mua sản phẩm khi công ty không có đủ hàng tồn để đáp ứng đơn hàng.
Bạn có thể khắc phục dễ dàng bằng cách thêm một trigger mới với logic điều kiện cho các hành động của nó.
Trigger cần được kích hoạt khi có hàng mới được thêm vào bảng Orders và kiểm tra xem công ty có đủ tồn kho cho các sản phẩm được chỉ định để đáp ứng các đơn hàng đó hay không.
Nếu tồn kho đủ, trigger sẽ thực hiện thao tác INSERT giống thao tác đã kích hoạt nó — chỉ khác là lần này, các giá trị sẽ được lấy từ bảng đặc biệt inserted.
Bài tập này là một phần của khóa học
Xây dựng và Tối ưu hóa Trigger trong SQL Server
Hướng dẫn bài tập
- Thêm một trigger mới kích hoạt cho câu lệnh
INSERTvà kiểm tra xem số lượng đặt hàng có thể được đáp ứng bởi tồn kho hiện tại hay không. - Nếu không đủ hàng, hãy phát sinh lỗi. Ngược lại, thực hiện
INSERTbằng cách sử dụng bảng đặc biệtinserted.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
-- 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;