请问在SQL SERVER 2000 上面有一个表,其中的主键为varchar,现在想实现读取记录中主键的最大值,然后对最大值+1,之后在使用得到的值作为主键存到数据库中,这个操作过程需要怎么进行加TABLOCKX(排它表锁),使之能够进行并发处理。这个操作过程没完成之前,禁止其他用户进行相同操作。

解决方案 »

  1.   

    begin tran
        select * from [table] with(xlock,paglock) where ..
        ....
    commit tran
      

  2.   

    以前写过的一篇文章,希望对楼主有用:
    http://www.leadbbs.com/a/a.asp?B=230&ID=2451856&E=1&EID=33
      

  3.   

    我的事务是这个样子:
    BEGIN TRAN 
    declare @max_id int update max_id set @max_id=id=id+1 select * from max_id 
    insert into T_XMJBXX(XMBM,XMMC,CDDW,XMLB,CDDW_ID,ZZJGDM,DWXZ,XMZT) values(@max_id,'ddfeee','sdww','A','1000000754','401360920','AA','5')
    COMMIT TRAN
    请问该怎么加锁,涉及到了两个表
      

  4.   


    你是不是要取表max_id里最大的id,然后再+1放到表T_XMJBXX里??
      

  5.   

    如果是,该这样写吧:
    BEGIN TRAN 
    declare @max_id int 
    select @max_id=max(id) from max_id with (xlock,paglock)
    insert into T_XMJBXX(XMBM,XMMC,CDDW,XMLB,CDDW_ID,ZZJGDM,DWXZ,XMZT) values(@max_id,'ddfeee','sdww','A','1000000754','401360920','AA','5') 
    COMMIT TRAN