SQL Server:将整个列复制到另一个列错误

时间:2016-06-18 15:18:54

标签: sql-server

我正在尝试将测试表中fælge列的所有数据移到表测试中的fælgen列中以使用此查询

 INSERT INTO [dbo].[test2] ([Fælgen])
     SELECT Fælge 
     FROM [dbo].[test]; 

但我收到一个错误,它说它无法将空值插入到ET列中,而不是我试图将数据插入

  

Msg 515,Level 16,State 2,Line 2
  无法将值NULL插入列' ET',table' OminiData.dbo.test2&#39 ;;列不允许空值。 INSERT失败。

4 个答案:

答案 0 :(得分:1)

当您要将数据插入表时,您需要确保传递所有约束并且没有任何违反它们。

在插入新记录时,您需要确保所有Non-Null列都具有值。实际上,如果不考虑约束并为不可归零的列提供值,则无法将值插入表中的单个列。

最后要克服这个错误,你有两个选择:

  1. 更新目标列(如果Test和Test2之间存在一对一或多关系,则需要使用基于Join的Update,否则简单的Update将是解决方案)

  2. 为ET提供非空值

     INSERT INTO [dbo].[test2] ([Fælgen], [ET])
         SELECT Fælge , '' as ET
         FROM [dbo].[test];
    

答案 1 :(得分:0)

在表格上按鼠标右键,选择脚本表格为... - > INSERT 。将有一个用于插入的脚本模板。此脚本中提到的所有列都应具有由数据类型确定的值。

答案 2 :(得分:0)

我正在处理同样的错误。从此链接SQL Server: copy data from one column to another column?

中找到了此信息

使用Merge我能够在两个不同的表中将数据从一列复制到另一列。 确保需要复制两列的数据类型,并确保两个表的行数。

答案 3 :(得分:-1)

您无法将值插入单个数据库列。您总是插入整行。因此,您的陈述并不意味着在此列中插入一些值。它的真正含义是向此列插入一些值,为所有其他列插入null / default值。如果其他任何列不允许空值并且没有非空默认值,则插入将失败。