WRONG ERROR:当IDENTITY_INSERT设置为OFF时,无法在表'Table1'中为identity列插入显式值

时间:2013-02-13 09:57:55

标签: sql sql-server sql-server-2008 tsql

我有这个奇怪的问题,我创建了一个包含四列的表,并将一列设置为int类型的主键。我没有将主键列设置为标识,但是当我尝试在表中插入数据时,我收到此错误:

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

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

创建'table1':

    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

并插入'table1'

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

非常感谢。

2 个答案:

答案 0 :(得分:1)

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

使用此代码,将使用ID作为PK创建表,而不使用IDENTITY属性。一切都很好。

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

使用此代码,您将数据插入[PARTIAL_NEWVEDJA]。[dbo]。[Table1],这是另一个DB中的表。看起来在该表中为ID列启用了IDENTITY属性。

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

拉​​吉

答案 1 :(得分:0)

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

尝试:

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