我如何解决“表中标识列的显式值”?

时间:2010-06-18 12:10:51

标签: .net sql visual-studio sql-server-2005

如果我尝试将一些数据添加到我的表中,则会发生错误:

错误:消息8101,级别16,状态1,行1 只有在使用列列表并且IDENTITY_INSERT为ON时,才能指定表'ENG_PREP'中标识列的显式值。

insert into ENG_PREP VALUES('572012-01-1,572012-01-2,572012-01-3,572013-01-1,572013-01-2',
'',
'500',
'',
'A320 P.001-A',
'Removal of the LH Wing Safety Rope',
'',
'',
'',
'0',
'',
'AF',
'12-00-00-081-001',
'',
'',
'',
'',
'',
'',
'' )

2 个答案:

答案 0 :(得分:1)

如果您必须写入标识栏,请使用

SET IDENTITY_INSERT YourTableName ON

正如错误消息所示。

否则,请勿尝试写入标识列。

答案 1 :(得分:0)

您的陈述

insert into ENG_PREP

将尝试在表的所有列中插入值 - 包括IDENTITY列,您永远不应该插入特定值。

您需要做的是指定您真正想要将值插入的表的哪些列,并省略IDENTITY列 - 这将由SQL Server本身自动处理:

 INSERT INTO dbo.ENG_PREP(column1, column2, ...., columnX)
 VALUES(values1, values2, ...., valuesX)

您只需要指定您真正想要为其设置值的列(例如,您可以跳过大多数只在示例中插入''的列)。