2013-07-02 4 views
0

후 나는 저장된 프로 시저SQL 서버 트리거 업데이트

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 

를 만들어 내가 그것을 0 뭔가를 할 경우 다른 또 다른 일을 업데이트 한 후 UnitsStock 컬럼의 값을 확인하기 위해 제품 테이블에 업데이트 트리거 이후 만들고 싶어

+1

* 중복 질문 * 열어서는 안됩니다. 개선 할 점이 있으면 새로운 질문을 게시하는 대신 기존 질문을 수정 *해야합니다. 그 말은, 당신은이 하나에 더 많은 노력을했습니다 그래서 나는 [오래된 하나] (http://stackoverflow.com/questions/17426629/after-update-trigger-in-sql-server-2008) –

+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 

주문한되는 단위의 수보다 작은 지 여부를 확인하지 않는 때문에 현재 UnitsStock은 <= 0에 대한 수표로 더 나아지며, 심지어는 < 0에 대한 별도의 수표로도 이와 다르게 처리 할 수 ​​있습니다.

이 코드는 UPDATE 문 다음에 저장 프로 시저에 있어야합니다.