日期:2014-05-18  浏览次数:20509 次

求这个怪异问题的解释,高人进来看看

有表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

但是,居然重复了.概率非常小,两年了,出现了一次.



------解决方案--------------------
并发了?
------解决方案--------------------
Update LastID Set LastID=LastID+1 Where Tbname='WorkGroup'
重复是什么意思?貌似你这个是'WorkGroup'的全部+1的。
------解决方案--------------------
每次都+1,你是如何看出来重复的呢?
------解决方案--------------------
declare @lastid int 
Update LastID Set LastID=LastID+1 , @lastid = LastID+1 Where Tbname='WorkGroup' ;
select @lastid ;

我想这样应当可行
------解决方案--------------------
加个UNIQUE不就可以了?
------解决方案--------------------
update要加个排它锁吧。
------解决方案--------------------

------解决方案--------------------