id之间的差距是db中的自动增量

时间:2013-04-11 13:30:55

标签: sql-server database

我的数据库中有一个表,其id为int auto increment。当我创建一个ndew条目时,一切顺利,id增加1。

但今天我看到了一个大洞。其中一条记录的id = 56,而下一条记录的id = 1055。

什么可能导致这种情况。我们没有在这个数据库上进行备份。

2 个答案:

答案 0 :(得分:0)

有几件事可以导致这个

  1. 有人通过运行DBCC CHECKIDENT
  2. 重新种植了桌子
  3. 有人插入了一堆行并将其删除
  4. 尝试插入一批行,批处理失败, 一切都被回滚,SQL Server不重用身份 值
  5. 另外请注意,如果删除所有带有DELETE语句的行,则种子不会重置为1,如果您TRUNCATE表是

答案 1 :(得分:0)

很可能在插入或事务回滚时出现了一些错误。 表的标识值不受事务的影响。因此,例如,即使您向表中插入值并回滚事务,您的indentity值也将“保持递增”。简短的例子说明:

create table _test (
    id int identity (1,1)
    ,txt varchar(2)
)
insert into _test(txt)
select 'aa' as txt

insert into _test(txt)
select 'bb' as txt union all 
select 'ccc'

GO

insert into _test(txt)
select 'dd' as txt


select * from _test