我有一个表格,其中的字段会递增。该字段的值为1, 2, 3...60
,然后字段为1060
。
我不知道为什么?
id的下一个值必须是61
。
答案 0 :(得分:3)
这是SQL Server 2012的一项新功能。标识列使用Sequences
,默认情况下会对值进行兑现,以便在插入新行时加快速度。当SQL Server的计划外关闭发生时,缓存将丢失,并且身份值将继续创建的间隙(通常为1000或10000)。
答案 1 :(得分:1)
可能有几个原因 - 一些最有可能的原因:
DBCC CHECKIDENT ({table}, RESEED, {value});
SET IDENTITY_INSERT ON
自动增量字段 不 保证连续。你保证唯一。如果你需要它们是连续的,那么我建议你自己跟踪下一个ID,这需要你考虑并发,外键引用等。
答案 2 :(得分:0)
假设您的意思是IDENTITY字段,增量为1。 每次插入新记录时,这会使值增加1.
引用:
如果存在频繁删除,差距的表的标识列 可以在身份值之间发生。如果这是一个问题,请不要使用 IDENTITY属性。但是,要确保没有差距 创建或填补现有差距,评估现有身份 使用SET IDENTITY_INSERT ON显式输入之前的值。
正如评论中提到的那样,该表可能曾经填充了所有缺失值的数据,但这些数据已被删除。 (因为这是相当大的一块,也许这是批量完成的?)