我正在尝试在Projectdetails中创建一个列EAC。 表1:[Projectdetails] 表2:[' RAC']
(SELECT b.[EAC] FROM [dbo].[Projectdetails] a
INNER JOIN [dbo].['RAC'] b ON a.[ProjectKey]= b.[Project _ID])
工作正常并返回421行。
但是以下查询不起作用:
Insert into [dbo].[Projectdetails]([EAC])
(SELECT b.[EAC] FROM [dbo].[Projectdetails] a
INNER JOIN [dbo].['RAC'] b ON a.[ProjectKey]= b.[Project _ID])
返回me无法将值NULL插入到ProjectKey列
中答案 0 :(得分:0)
我怀疑你真的想要update
:
update pd
set EAC = r.EAC
from [dbo].[Projectdetails] pd join
[dbo].['RAC'] r
on pd.[ProjectKey] = r.[Project _ID]);
顺便说一下,将单引号放在表名中似乎是个坏主意。
答案 1 :(得分:0)
我猜,ProjectKey是主键,因为它不是NULL。所以,当你是 尝试在此表中插入新行而不提供任何特定的行 此列的值,因此sqlserver尝试将NULL添加为默认值 值。但由于这是NOT NULL列,它会给你错误。
使其成为可行的最佳解决方案是将此列作为 自动增量列。喜欢这个
Sql Server add auto increment primary key to existing table
SQL Server, How to set auto increment after creating a table without data loss?