开始使用免费开始使用

下单前检查库存

多次出现这样的情况:客户下单的产品,公司库存不足,无法完成订单。

为了解决这个问题,您可以添加一个带有条件逻辑的新触发器。

该触发器应在向 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;
编辑并运行代码