更新后的SQL Server触发器

时间:2013-07-02 14:22:03

标签: sql-server-2008 triggers

我做了一个存储过程

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做其他事情做另外的事情

1 个答案:

答案 0 :(得分: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

由于您没有检查订购的单位数量是否小于当前的单位股票,您最好检查<= 0,或者甚至单独检查< 0以不同的方式处理这个问题。

此代码应放在UPDATE语句之后的存储过程中。