set @Sum_Num=(SELECT count(*) as  Sum_Num  FROM Barn  WHERE rtrim(ProBarcode)=rtrim(@ProBarcode)  AND rtrim(pihao)=rtrim(@pihao))  
           set @Dan_Price=(select Dan_Price from Barn WHERE rtrim(ProBarcode)=rtrim(@ProBarcode)  AND rtrim(pihao)=rtrim(@pihao))  
set @zk=(select zk  from Barn WHERE rtrim(ProBarcode)=rtrim(@ProBarcode)  AND rtrim(pihao)=rtrim(@pihao))  
set @num=(select Sum_Num  from Barn WHERE rtrim(ProBarcode)=rtrim(@ProBarcode)  AND rtrim(pihao)=rtrim(@pihao))  
      set @zhiliang=(select ifyanshou from storagein where rtrim(ProBarcode)=rtrim(@ProBarcode)  AND rtrim(pihao)=rtrim(@pihao) and id=@id) 
     if(@zhiliang <>'0') 
     begin    
       if (@Sum_Num>0) 
         begin 
if((@num+@ProNum)>0) 
begin 
UPDATE Barn SET  Sum_Num = Sum_Num + @ProNum,Dan_Price=(@num*dbo.GetZkPrice(@Dan_Price,@zk)+@ProNum*dbo.GetZkPrice(@S_Dan_Price,@S_zk))/(@num+@ProNum),zk=0 WHERE (rtrim(ProBarcode) = @ProBarcode) AND (rtrim(pihao) = @pihao) 
        end 
else-- 
begin 
UPDATE Barn SET  Sum_Num = Sum_Num + (@ProNum),zk=0 WHERE (rtrim(ProBarcode) = @ProBarcode) AND (rtrim(pihao) = @pihao) 
end 
  end 
else 
begin 
INSERT INTO Barn ( Departmentcode, inputcode, ProviderBh, BalanceMode,StorageInType, ProBarcode, BarnCode, Dan_Price, Pei_Price, Pi_Price, pihao, AvailabilityTime, Sum_Num, memo,zk) SELECT  Departmentcode, inputcode, ProviderBh, BalanceMode, StorageInType, ProBarcode, BarnCode, Dan_Price, Pei_Price, Pi_Price, pihao, AvailabilityTime, ProNum, memo,zk FROM StorageIn WHERE (id = @id) 
end 
/*修改基础档案的进价,零售价格,批发价格*/ 
update Product set Dan_Price=dbo.GetZkPrice(@S_Dan_Price,@S_zk),Pei_Price=@S_Pei_Price,Pi_Price=@S_Pi_Price where barcode=@ProBarcode 
/*修改仓库库存的零售价格,批发价格*/ 
update Barn set Pei_Price=@S_Pei_Price,Pi_Price= @S_Pi_Price where probarcode=@ProBarcode 
/*修改门店库存的零售价格*/ 
update Barn_Branch set Pei_Price=@S_Pei_Price where probarcode=@ProBarcode 
      end 
此段不是已经判断 库存中是否有这个商品呀
你又整个触发器来“忽悠”一通做啥子哦?