ตรวจสอบสต็อกสินค้าก่อนรับออร์เดอร์
หลายครั้งที่ลูกค้าสั่งซื้อสินค้าในขณะที่บริษัทมีสต็อกไม่เพียงพอต่อการจัดส่ง
ปัญหานี้แก้ไขได้ง่าย ๆ ด้วยการเพิ่ม trigger ใหม่ที่มี conditional logic สำหรับการทำงาน
โดย trigger ควรทำงานเมื่อมีการเพิ่มแถวใหม่ลงในตาราง Orders และตรวจสอบว่าบริษัทมีสต็อกสินค้าตามที่ระบุเพียงพอต่อการจัดส่งออร์เดอร์นั้นหรือไม่
หากสต็อกเพียงพอ trigger จะดำเนินการ INSERT เช่นเดียวกับคำสั่งที่กระตุ้นให้มันทำงาน—เพียงแต่ครั้งนี้ค่าต่าง ๆ จะถูกดึงมาจากตารางพิเศษ inserted
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การสร้างและปรับแต่ง Trigger ใน SQL Server
คำแนะนำการฝึกหัด
- เพิ่ม trigger ใหม่ที่ทำงานสำหรับคำสั่ง
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;