有表LastID  
表中有字段 LastID(int) Tbname(varchar)我有一个函数去执行这一个语句.Update LastID Set LastID=LastID+1 Where Tbname='WorkGroup' ;Select LastID From LastID WITH (TABLOCKX) Where Tbname='WorkGroup'按理说,每执行一次LastID都会加1但是,居然重复了.概率非常小,两年了,出现了一次.

解决方案 »

  1.   

    Update LastID Set LastID=LastID+1 Where Tbname='WorkGroup'
    重复是什么意思?貌似你这个是'WorkGroup'的全部+1的。
      

  2.   

    我有 (TABLOCKX) 呀,并发SQLSERVER应该会自己处理呀
      

  3.   


    我里面只有一个tbname为'WorkGroup' 的.
    我就是要每次加一,取一下,
    用它实现一个自动编号功能
      

  4.   

    declare @lastid int 
    Update LastID Set LastID=LastID+1  , @lastid = LastID+1  Where Tbname='WorkGroup' ;
    select @lastid ;我想这样应当可行
      

  5.   

    我取出ID后,再去插入表WorkGroup,那个表报PK_WorkGroup......约束什么.
    具体就不说了, 你懂的
      

  6.   

    说下我的想法:
    记得sql表有个锁的问题。lz的可能是【当一个进程占用这个表时,另一个进程只能访问,不能更新】,
    如果lz那个重复的表报PK_WorkGroup地方类似这样的话
    1,2,3,3,5,6,7,8,,,,,,觉得就是这个锁的问题。两个人几乎同时点击了这个操作。获取的都是3,第一先释放变4,后一个释放变5,然后下一个人取的时候就是5了。
    不知我说明白没。