我做了一个存储过程
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做其他事情做另外的事情
答案 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
语句之后的存储过程中。