我有一个表,其中的字段是递增的。该字段的值为1, 2, 3...60
,然后该字段为1060
。
我也不知道原因?
id的下一个值必须为61
。
发布于 2013-08-20 14:49:39
这是SQL Server 2012的一项新功能。Identity列使用Sequences
,默认情况下会将值转换为现金,以加快插入新行的速度。当SQL Server的计划外关闭发生时,缓存将丢失,并且标识值将继续并创建差距(通常为1000或10000)。
发布于 2013-08-20 14:27:45
可能有几个原因-最有可能的是:
已删除
DBCC CHECKIDENT ({table}, RESEED, {value});
SET IDENTITY_INSERT ON
插入具有特定ID的记录
自动增量字段不是保证连续的,而是。它们保证是独一无二的。如果您需要它们是连续的,那么我建议您自己跟踪下一个ID,这将要求您考虑并发性、外键引用等。
发布于 2013-08-20 14:22:00
我假设你指的是一个增量为1的IDENTITY字段。每次插入一条新记录,这个值就会增加1。
引述如下:
如果存在频繁删除的表的标识列,则标识值之间可能存在间隙。如果这是一个问题,请不要使用IDENTITY属性。但是,要确保未创建间隙或填充现有间隙,请先评估现有标识值,然后在启用SET IDENTITY_INSERT的情况下显式输入标识值。
正如注释中提到的,这个表很可能曾经有过填充了所有缺失值的数据,但这些值都被删除了。(由于这是一个相当大的块,可能这是批量完成的?)
https://stackoverflow.com/questions/18337087
复制