2

我有这个奇怪的问题,我创建了一个有四列的表,并将一列设置为 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

提前非常感谢。

4

2 回答 2

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 语句创建的同一个表中吗?

拉吉

于 2013-02-13T10:23:07.770 回答
0

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

尝试:

INSERT INTO [PARTIAL_NEWVEDJA].[dbo].[Table1]
       ([id]
       ,[name]
       ,[code]
       ,[exp_1])
    VALUES
        (null,N'سازمان',null,null), (2,N'معاونت',null,null);
于 2013-02-13T10:01:21.400 回答