有很多关于获取错误的帖子:
“必须为表中的标识列指定显式值”“当 IDENTITY_INSERT 设置为 ON 或复制用户插入 NOT FOR REPLICATION 标识列时”
问题始终是用户正在尝试执行以下操作:
insert into table1 select * from table2
就我而言,我正在提供列名,但仍然出现该错误。
编辑:我试图捕获标识列的原因是因为临时表是我最终将其他数据插入的测试版本RC_Incoming
。我的算法是:
- 创建
TempTable
为RC_Incoming
- 将其他表中的数据插入
TempTable
(RecordID
自动生成) - 确保一切看起来都正确
- 如果没问题,那就为 realz 做——插入到
RC_Incoming
.
代码:
<cfquery datasource="#LOCAL.DataSource#">
IF OBJECT_ID('tempdb.dbo.##TempTable') IS NOT NULL
DROP TABLE ##TempTable
ELSE
DBCC CHECKIDENT ([##TempTable], RESEED, 1);
CREATE TABLE ##TempTable
(
[RecordID] [INTEGER] IDENTITY NOT NULL,
[StudentID] [varchar](15) NOT NULL,
[CourseNumber] [varchar](6) NOT NULL,
[CompDateTime] [datetime] NOT NULL,
[SystemInfo] [varchar](250) NULL,
[WriteTime] [datetime] default GETDATE() NULL,
PRIMARY KEY CLUSTERED
(
[StudentID], [CourseNumber], [CompDateTime]
)
WITH
(
PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = ON, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON
)
)
</cfquery>
<cfquery datasource="#LOCAL.DataSource#">
SET IDENTITY_INSERT ##TempTable ON
INSERT INTO ##TempTable
(
RecordID
,StudentID
,CourseNumber
,CompDateTime
,SystemInfo
,WriteTime
)
SELECT RecordID
,StudentID
,CourseNumber
,CompDateTime
,SystemInfo
,WriteTime
FROM RC_Incoming
</cfquery>
我仍然得到:
执行数据库查询时出错。[Macromedia][SQLServer JDBC 驱动程序][SQLServer]当 IDENTITY_INSERT 设置为 ON 或复制用户插入 NOT FOR REPLICATION 标识列时,必须为表 '#TempTable_____________________________________________________________________________________________00000000066E' 中的标识列指定显式值。
RC_Incoming
其中已经有数据,并且具有完全相同的结构(在 SQL Server Management Studio 中完成):
CREATE TABLE dbo.[RC_Incoming]
(
[RecordID] [INTEGER] IDENTITY NOT NULL,
[StudentID] [varchar](15) NOT NULL,
[CourseNumber] [varchar](6) NOT NULL,
[CompDateTime] [datetime] NOT NULL,
[SystemInfo] [varchar](250) NULL,
[WriteTime] [datetime] default GETDATE() NULL,
PRIMARY KEY CLUSTERED
(
[StudentID], [CourseNumber], [CompDateTime]
)
WITH
(
PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = ON, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON
) ON [PRIMARY]
) ON [PRIMARY]