下单前检查库存
多次出现这样的情况:客户下单的产品,公司库存不足,无法完成订单。
为了解决这个问题,您可以添加一个带有条件逻辑的新触发器。
该触发器应在向 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;