下面的腳本創建一個表,暫時關閉自動標識,在指定PK值時插入記錄,然後重新啓用自動標識。IDENTITY_INSERT和SQL Server Compact
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]
這是意想不到的。我究竟做錯了什麼?
種子不要用過於緊湊舒適; [它已被棄用,並有更好的選擇](http://stackoverflow.com/a/20364011/61305)。 –
@AaronBertrand我們仍然使用它,並會繼續這樣做,因爲它非常方便。數據庫只是一個文件,我可以複製它。我相信MS會以某種方式重新啓動支持,因爲沒有爲他們的平臺提供進程內/單一文件數據庫引擎是沒有意義的。如果它在某個時候完全死亡,我們將轉移到SQLite。 –