自动增量ID正在跳过SQL Server中的值。我怎么能阻止它?

时间:2015-01-15 21:05:14

标签: sql sql-server

第1步:创建表

CREATE TABLE [dbo].[AAA](
[id] [int] IDENTITY(1,1) NOT NULL,
[name] [nchar](10) NOT NULL,
[last] [nchar](10) NOT NULL)

第2步:插入正确的值

insert into aaa values ('lkj', 'lkj')

这将生成ID - 1

第3步:尝试插入不正确的值

insert into aaa values ('lkj', NULL)

这将是错误,不会插入任何记录

第4步:

insert into aaa values ('lkj', 'lkj')

这将再次插入,但生成的ID将为 - 3(非2) 因为ID 2是在步骤3生成的,但没有插入记录。

我希望当我下次输入任何记录ID时,应该是2而不是3。 我在下面搜索并找到了MySQL的解决方案,但我想在SQL Server中使用它:

alter table tablename auto_increment =1

OR

alter table tablename auto_increment =#

我发现还有另一种解决方案......

declare @max int;
select @max = max(key) from table;
dbcc checkident(table,reseed,@max)

这段代码很好,而且很有效。但是每次有一个跳过的ID时我都必须执行此操作...是否有针对此问题的永久性修复?我想要"执行一次,然后忘记它......"我在生产服务器上面临这个问题所以我想要一个永久的解决方案。我正在使用实体框架来插入数据,因此每次都无法使用此查询。

请让我知道任何解决方法。在SQL Server 2012或Entity Framework 6中。 在此先感谢。

0 个答案:

没有答案