開始使用免費開始

下單前檢查存貨

多次出現顧客下單時,公司實際存貨不足以完成該訂單的情況。

這個問題可以透過新增一個包含條件邏輯的觸發程序來輕鬆修正。

當在 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;
編輯並執行程式碼