เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

ตรวจสอบสต็อกสินค้าก่อนรับออร์เดอร์

หลายครั้งที่ลูกค้าสั่งซื้อสินค้าในขณะที่บริษัทมีสต็อกไม่เพียงพอต่อการจัดส่ง

ปัญหานี้แก้ไขได้ง่าย ๆ ด้วยการเพิ่ม 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;
แก้ไขและรันโค้ด