插入&选择

时间:2014-12-27 16:07:52

标签: sql sql-server

我正在尝试在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列

2 个答案:

答案 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?

相关问题