2013-07-02 215 views
0

后我做了存储过程SQL Server触发器更新

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 = [email protected] , UnitsStock = [email protected] where [email protected] 

end 

,我想在产品表更新触发后进行检查UnitsStock列的值更新后如果0做别的事情做的另一件事

+1

你不应该打开*重复*问题 - 如果你有改进,你应该*编辑*你现有的问题,而不是发布一个新的。话虽如此,你已经投入更多精力投入这一个,所以我投票关闭[老一](http://stackoverflow.com/questions/17426629/after-update-trigger-in-sql-server-2008) –

+0

okai谢谢你,并为那个错误感到抱歉:) –

回答

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声明后。