如果我尝试将一些数据添加到我的表中,则会发生错误:
错误:消息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',
'',
'',
'',
'',
'',
'',
'' )
答案 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)
您只需要指定您真正想要为其设置值的列(例如,您可以跳过大多数只在示例中插入''
的列)。