我真的审查了好几次,这就是我问的原因;寻求指导...
我有一张表,如下面的脚本所示。然后,我将 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/