sql - IDENTITY_INSERT 和 SQL Server Compact

标签 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

问题是最后一个插入 - 它提示

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)

关于sql - IDENTITY_INSERT 和 SQL Server Compact,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32130331/

相关文章:

sql - SQL动态地将数据从数据库存储到另一个数据库

c# - 如何在 SQL Server CE 数据库 windows phone 8 上使用双向绑定(bind)

c# sql 插入。使用未分配的局部变量?

php - 字段列表中的未知列。找不到哪里出了问题

java - 抽象模式类型 'User_Book' 未知

php - 在 MySQL 中根据时间选择谁轮类的问题

mysql - 如何使 field = 的 where 条件始终为真?

sql - 在 SQL Server 中按连续日期分组

sql-server - 如何使用 sqlpackage 从 onprem 提取 bacpac 并将其直接发送到 azure 存储帐户?

c# - 如何使用 C# 连接到 Winform 应用程序中的 .sdf 文件?