第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中。 在此先感谢。