IDENTITY_INSERT和SQL Server Compact

时间:2015-08-20 23:57:48

标签: sql sql-server sql-server-ce sql-server-ce-4

下面的脚本创建一个表,暂时关闭自动标识,在指定PK值时插入记录,然后重新启用自动标识。

DROP TABLE Foo;
GO

CREATE TABLE Foo (Id int IDENTITY (1,1) NOT NULL, 
                  Bar nvarchar(100) NOT NULL);
GO

ALTER TABLE Foo ADD CONSTRAINT FooConstraint PRIMARY KEY (Id);
GO

SET IDENTITY_INSERT Foo ON;
GO

INSERT INTO Foo(Id, Bar) VALUES (1, 'a');
GO
INSERT INTO Foo(Id, Bar) VALUES (2, 'b');
GO
INSERT INTO Foo(Id, Bar) VALUES (3, 'c');
GO

SET IDENTITY_INSERT Foo OFF;
GO

INSERT INTO Foo(Bar) VALUES ('d');
GO

问题是最后一次插入 - 它抱怨

  

无法将重复值插入唯一索引。 [表名= Foo,约束名= FooConstraint]

这是出乎意料的。我做错了什么?

1 个答案:

答案 0 :(得分:1)

您需要像这样重置种子

ALTER TABLE [Foo] ALTER COLUMN [Id] IDENTITY (4, 1)