我的数据库中有一个表,其id为int auto increment。当我创建一个ndew条目时,一切顺利,id增加1。
但今天我看到了一个大洞。其中一条记录的id = 56,而下一条记录的id = 1055。
什么可能导致这种情况。我们没有在这个数据库上进行备份。
答案 0 :(得分:0)
有几件事可以导致这个
DBCC CHECKIDENT
另外请注意,如果删除所有带有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