IDENTITY_INSERT 和 SQL 服务器紧凑型
IDENTITY_INSERT and SQL Server Compact
下面的脚本创建一个table,暂时关闭自动识别,插入记录同时指定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
问题是最后一个插入 - 它抱怨
A duplicate value cannot be inserted into a unique index. [ Table name = Foo,Constraint name = FooConstraint ]
这是出乎意料的。我做错了什么?
你需要像这样重置种子
ALTER TABLE [Foo] ALTER COLUMN [Id] IDENTITY (4, 1)
下面的脚本创建一个table,暂时关闭自动识别,插入记录同时指定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
问题是最后一个插入 - 它抱怨
A duplicate value cannot be inserted into a unique index. [ Table name = Foo,Constraint name = FooConstraint ]
这是出乎意料的。我做错了什么?
你需要像这样重置种子
ALTER TABLE [Foo] ALTER COLUMN [Id] IDENTITY (4, 1)