SQL Server错误515

时间:2012-03-21 10:28:17

标签: sql sql-server insert sql-server-2008-r2

我有一个表SINVOICE和另一个名为SINVOICE_LINE的表。

我需要将SINVOICE的所有列都放入SINVOICE _ LINE。

我创建了相应的列,并尝试复制值。 SINVOICE的主键是SINVOICE_CODE,而SINVOICE_LINE的主键是复合键(SINVOICE_CODE, SINVOICE_LINE_NUMBER)

我写了以下查询:

INSERT INTO SINVOICE_LINE (sinvoice.ITINERARY_CODE) 
   SELECT sinvoice_line.ITINERARY_CODE 
   FROM SINVOICE 
   INNER JOIN sinvoice_line ON sinvoice.sinvoice_code = sinvoice_line.sinvoice_code;

我收到此错误:

  

不能将值NULL插入到SINVOICE_CODE列中,表SINVOICE_LINE;列不允许空值。 INSERT失败。

我不明白为什么我收到此错误,因为我没有尝试在SINVOICE_CODE列中插入任何值。

感谢!!!

1 个答案:

答案 0 :(得分:1)

看起来你需要UPDATE而不是INSERT。

试试:

UPDATE  SINVOICE_LINE
SET ITINERARY_CODE = sinvoice.ITINERARY_CODE
from SINVOICE 
WHERE sinvoice.sinvoice_code = sinvoice_line.sinvoice_code;