SQL Server错误: "Cannot insert explicit value for identity column" even when I SET IDENTITY_INSERT ON

标签 sql sql-server sql-server-2012 insert insert-select

我真的审查了好几次,这就是我问的原因;寻求指导...

我有一张表,如下面的脚本所示。然后,我将 IDENTITY_INSERT 设置为 ON。然后我尝试执行插入选择,(我需要完全相同的 ID)

我不断收到此错误:

Msg 544, Level 16, State 1, Line 2
Cannot insert explicit value for identity column in table 'Table1' when IDENTITY_INSERT is set to OFF.

有人知道为什么吗?数据库级别的任何设置都可以覆盖 IDENTITY_INSERT ON?

我很感激任何建议。预先感谢并致以亲切的问候。

脚本到表:

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].Table1
(
    [TableId] [int] IDENTITY(1,1) NOT NULL,
    [Name] [nvarchar](256) NOT NULL,
    [RowVersion] [timestamp] NOT NULL,
    [AddedDate] [datetime2](7) NOT NULL,
    [stuff2] [int] NOT NULL,
    [ModifiedDate] [datetime2](7) NOT NULL,
    [LastModifiedBy] [int] NOT NULL,

    CONSTRAINT [Table1_PK] 
        PRIMARY KEY CLUSTERED ([TableId] ASC)
) ON [PRIMARY]
GO

插入语句:

SET IDENTITY_INSERT [dbo].Table1 ON;

INSERT INTO [dbo].Table1 ([TableId], [Name], [AddedDate], [stuff2], [ModifiedDate], [LastModifiedBy])
    SELECT 
        [RoleID], [Name], [AddedDate], [stuff2], [ModifiedDate], [LastModifiedBy] 
    FROM 
        [dbo].Table2

最佳答案

即使我在表上运行了SET IDENTITY_INSERT mytable ON命令,我也遇到了同样的错误。我意识到这是因为我正在关闭查询脚本中的行。

如果您使用 ; 关闭每一行,则 SET IDENTITY_INSERT mytable ON 命令将不适用于以下各行。


这样的查询
SET IDENTITY_INSERT mytable ON;
INSERT INTO mytable (VoucherID, name) VALUES (1, 'Cole');

报错
当 IDENTITY_INSERT 设置为 OFF 时,无法在表“mytable”中插入标识列的显式值。

但是这样的查询会起作用:

SET IDENTITY_INSERT mytable ON
INSERT INTO mytable (VoucherID, name) VALUES (1, 'Cole')
SET IDENTITY_INSERT mytable OFF;

看起来SET IDENTITY_INSERT命令仅适用于事务,而;将表示事务的结束。

关于SQL Server错误: "Cannot insert explicit value for identity column" even when I SET IDENTITY_INSERT ON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47424999/

相关文章:

php - 当数据库发生变化时自动更改 html 项目

java - 将元数据库连接到 SQL Server

sql - 获取与 SQL 中的某些商品组一起购买的所有订单

sql - 检查SQL Server错误日志以获取详细信息。通常,断言失败是由软件错误或数据损坏引起的

sql-server - ASP Classic SQL Server 以 XML 格式从数据库返回结果

deployment - 如何配置SSIS 2012项目在不同的环境配置下运行?

php - 根据选择更新表,可能使用锁定?

sql - 删除 H2 中列的唯一约束

php - 自定义PHP错误消息

c# - 如何为我的应用程序构建搜索机制?