CREATE PROCEDURE MaxiFatherId 
@cAcc_Id char(3)
ASBEGIN TRAN
DECLARE @BH int 
UPDATE ufsystem..UA_Identity WITH(ROWLOCK) SET 
@BH=iFatherId+1,
iFatherId=iFatherId+1
WHERE cAcc_Id=@cAcc_Id and cVouchType='rd'select @BH as New_id 
COMMIT TRAN/*
ufsystem..UA_Identity 的iFatherId字段没被更新,错在那里呢?
*/

解决方案 »

  1.   

    你想要实现什么功能?UPDATE ufsystem..UA_Identity WITH(ROWLOCK) SET @BH=iFatherId+2    WHERE cAcc_Id=@cAcc_Id and cVouchType='rd'你为什么不这么写?
      

  2.   

    CREATE PROCEDURE MaxiFatherId 
    @cAcc_Id char(3)
    AS
    BEGIN TRAN
    DECLARE @BH int 
        UPDATE mydb..UA_Identity WITH(ROWLOCK) SET 
            @BH=iFatherId+1,
            iFatherId=iFatherId+1
        WHERE cAcc_Id=@cAcc_Id and cVouchType='rd'
    select @BH as New_id 
    COMMIT TRAN
    GOCREATE TABLE UA_Identity(cAcc_Id char(3),iFatherId INT,cVouchType VARCHAR(10))
    INSERT INTO UA_Identity
    SELECT 'a01',25,'rd'
    EXEC MaxiFatherId 'a01'SELECT * FROM UA_Identity 
    /*
    cAcc_Id iFatherId   cVouchType
    ------- ----------- ----------
    a01     26          rd(1 行受影响)
    */ 有更新啊,是不是你的表有触发器.