2013-07-02 216 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聲明後。