错误错误:当IDENTITY_INSERT设置为OFF时,无法在表'Table1'中插入标识列的显式值

问题描述:

我有这个奇怪的问题,我创建了一个包含四列的表,并将一列设置为具有int类型的主键。我没有设置主键列身份,但是当我尝试在表中插入数据我得到这个错误:错误错误:当IDENTITY_INSERT设置为OFF时,无法在表'Table1'中插入标识列的显式值

Cannot insert explicit value for identity column in table 'Table1' when IDENTITY_INSERT is set to OFF. 

我试过不指定主键列(假设它设置为IDENTITY插入(x,y)!),在这种情况下,它不会给出任何错误,但它也不会插入任何数据!

创建 '表1':

USE [NEWVEDJA] 
    GO 
    SET ANSI_NULLS ON 
    GO 
    SET QUOTED_IDENTIFIER ON 
    GO 
    CREATE TABLE [dbo].[Table1](
     [id] [int] NOT NULL, 
     [name] [nvarchar](50) NULL, 
     [code] [int] NULL, 
     [exp_1] [nvarchar](max) NULL, 
    CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED 
    (
     [id] ASC 
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,   ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
    ) ON [PRIMARY] 
    GO 

,并插入到 '表1'

INSERT INTO [PARTIAL_NEWVEDJA].[dbo].[Table1] 
      ([id] 
      ,[name] 
      ,[code] 
      ,[exp_1]) 
     VALUES 
      (1,N'سازمان',null,null), (2,N'معاونت',null,null); 
    GO 

感谢很多提前。

+0

为我工作。该表可能不是由你的问题中的'create table'语句创建的。 – Andomar 2013-02-13 09:59:39

+2

您正在[NEWVEDJA]中创建Table1,但在[PARTIAL_NEWVEDJA] – brykneval 2013-02-13 10:02:12

+0

哇执行,谢谢@ brykneval,我怎么会错过! – 2013-02-13 10:19:06

USE [NEWVEDJA] 
GO 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
CREATE TABLE.... 

利用该代码,表是用ID作为不IDENTITY属性PK创建。一切都很好。

INSERT INTO [PARTIAL_NEWVEDJA].[dbo].[Table1] 
     ([id] 

有了这个代码,要插入数据到[PARTIAL_NEWVEDJA] [DBO]。[表1],这是在另一个DB的表。看起来IDENTITY属性在该表中为ID列启用。

您可以尝试将数据插入到您使用CREATE语句创建的同一张表中吗?

拉吉

+0

谢谢@Raj。我错过了! – 2013-02-13 10:28:25

如果identity_insert被禁用,您将不被允许显式设置id列的值。我假设某种自动编号已经建立。

尝试:

INSERT INTO [PARTIAL_NEWVEDJA].[dbo].[Table1] 
     ([id] 
     ,[name] 
     ,[code] 
     ,[exp_1]) 
    VALUES 
     (null,N'سازمان',null,null), (2,N'معاونت',null,null); 
+0

它会产生另一个错误:不允许DEFAULT或NULL作为显式标识值。加上我创建了NOT NULL列。 – 2013-02-13 10:06:06