0

我做了一个存储过程

ALTER proc [dbo].[MakeOrder]
@barcode varchar(50),
@packs int ,
@units int,
@Eid int 
as
begin

insert into Orders (Barcode,Price,PacksQty,UnitQty)
values        (@barcode,dbo.GetOrderPackPrice(@packs,@barcode)+dbo.GetOrderUniPrice(@units,@barcode),@packs,@units)

insert into OrderDetails(Eid,Date)
values (@Eid,GETDATE())

update Product
set Stock = Stock-@packs , UnitsStock = UnitsStock-@units where BarCode=@barcode

end

我想在产品表上进行更新后触发器以检查更新后 UnitsStock 列的值如果它为 0 则执行其他操作

4

1 回答 1

2

您不一定需要触发器来执行此操作。您可以简单地再次选择该列的值:

DECLARE @currentUnits int
SELECT  @currentUnits = UnitsStock FROM Product WHERE BarCode = @barcode

然后建立一些条件逻辑:

IF @currentUnits <= 0
BEGIN
    -- Do something
END
ELSE
BEGIN
    -- Do something else
END

由于您没有检查订购的单位数量是否少于当前的 UnitsStock,因此您最好检查一下<= 0,或者甚至单独检查一下,以便< 0以不同的方式处理此问题。

这段代码应该放在你的存储过程中,在UPDATE语句之后。

于 2013-07-02T14:24:44.010 回答