有个表的一个字段(id)设置了identity属性,但是今天用户反映出现了断号的情况,比如上一次到了1000,插入下一条数据的时候变成了1005,中间几个连号(1001~1004)不知道为什么没有了。请问各位高手什么情况下会发生这样的情况阿,急,各位帮帮忙~~~现在可以确定的事情是:通过检查程序的log,没有人删除过这个表的数据,确实是在插入的时候一下子变成了1005
调试欢乐多
use tempdb
gocreate table test(id int identity(1,1),name char(1))
goinsert test select 'a'
godbcc checkident('dbo.test',reseed,10)
goinsert test select 'b'
goselect * from test
godrop table test
go/**
1 a
11 b
**/这种可能排除了么?
select * , newid = (select count(1) from tb where id < t.id) + 1 from tb t
1:这个可能性几乎可以排除
2:看不懂,什么叫种子重置?是重新设置identity属性吗?那原来存在的数据怎么办?原来断开的号有解决办法吗?
你的意思是这个问题是SQL Server本来就有的bug吗?我在网上看到也有人这么说,但是一直苦于没有专家权威的说法,不知道谁能给找个权威的解释,我们也好向用户交差,呵呵
一般什么情况下会发生插入失败呢?比如主键冲突?identity列是唯一主键应该不会发生这种情况吧。或者字段长度溢出?
编号一般都是在select的时候通过排序的得到的。