列名或提供的值的数量与使用 NEWID() 的表定义不匹配

  • 本文关键字:NEWID 不匹配 定义 sql sql-server
  • 更新时间 :
  • 英文 :

CREATE TABLE #TempAnnualOnline
( 
TrainingStatus nvarchar(70), 
FirmEmployeeID nvarchar(25), 
DepartmentID nvarchar(25), 
StartDate datetime, 
SectionDate datetime,
TrainingSessionID uniqueidentifier
) 
INSERT INTO #TempAnnualOnline
select 'Users Not Started' , '1535' , '0100' , '2017-04-17 00:00:00' , NULL , NEWID()

我已经研究了这个问题,所以我不相信它是重复的,但如果是,请标记它。

在 select 语句的最后一项上,我没有指定 GUID,而是使用 NEWID(( 函数。

当我按原样运行它时,出现此错误。

列名或提供的值的数量与表不匹配 定义。

当我从表中取出 TrainingSessionID 和 NEWID(( 时,它工作正常。

我几乎可以肯定我为选择提供了正确数量的列。

使用 NEWID(( 和插入到 SELECT 有什么我没有得到的吗?

你的代码很好。您在其他地方有问题导致此错误。

尝试显式定义插入列,看看问题是否仍然存在。

INSERT INTO #TempAnnualOnline
(TrainingStatus, 
FirmEmployeeID, 
DepartmentID, 
StartDate, 
SectionDate,
TrainingSessionID)
select 'Users Not Started' , '1535' , '0100' , '2017-04-17 00:00:00' , NULL , NEWID()

INSERT INTO #TempAnnualOnline
(TrainingStatus, 
FirmEmployeeID, 
DepartmentID, 
StartDate, 
SectionDate,
TrainingSessionID)
Values  ('Users Not Started' , '1535' , '0100' , '2017-04-17 00:00:00' , NULL , NEWID())

我不确定为什么你的不起作用,因为它对我有用。但是,如果您想稍微调整插入,则可以使用 选择进入.额外的好处是,您无需定义临时表列。

SELECT 
'Users Not Started' AS [TrainingStatus]
,'1535' AS FirmEmployeeID
,'0100' AS [DepartmentID]
,'2017-04-17 00:00:00' AS [StartDate]
,NULL AS [SectionDate] 
,NEWID() AS [TrainingSessionID]
INTO  #TempAnnualOnline
SELECT * FROM [#TempAnnualOnline]
DROP TABLE #TempAnnualOnline

刷新SQL Server Management Studio似乎可以解决此问题。关闭并重新打开整个内容后,我运行了这个确切的脚本,没有任何更改并且它起作用了。

奇怪。

在进行此修改之前,我已经多次执行此脚本,每次都删除并重新创建此表。

似乎只需要创建一个干净的石板。

感谢所有验证脚本语法正确的人。

此外,将来,我将调整@AlexanderHiggins,预先明确定义列以避免混淆。

最新更新