我有这个奇怪的问题,我创建了一个包含四列的表,并将一列设置为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
非常感谢。
答案 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);