2014-02-11 101 views
0

基于此topic我遇到了插入问题。从选择插入

Tests表包含:

TestID Name 
1  test_insert_film 
2  test_insert_writer 
3  test_insert_location 
4  test_delete_film 
5  test_delete_writer 
6  test_delete_location 

我想插入我的TestTables按以下顺序测试的id的:

INSERT INTO TestTables(TestID) 
    SELECT TestID 
    FROM Tests 

,但我得到:

Msg 515,Level 16,State 2,Line 1
无法插入值'NULL'到列'TableID',表'FilmS.dbo.TestTables';列不允许有空值。 INSERT失败。该语句已终止。

TestTables包含4列,其中之一是TestID。为什么这不起作用?

+1

去你的设计师,并在你的列列表中,你必须勾选复选框,以允许列表TableID的空值。这个错误,如果它允许只有你知道的空值... – Mez

+0

你必须为你的表TestTables提供'TableID'的值(** not **'TestID') - 这就是错误所说的。您目前没有在该列中插入任何内容.... –

回答

3

表格ID(!)在表TestTables不允许NULL值!此列不在INSERT填写的列表列表中,因此默认值为NULL。这就是你得到错误的原因。

您可能需要类似:

INSERT INTO TestTables(TestID, TableID) 
SELECT TestID, '' FROM Tests 

要使用默认值填充TableID列。也许TestTables表中的其他列也受到影响,需要进行类似处理。


PS:您还可以修改TestTables定义以为各个列提供默认值。如果你这样做,你可以保留上述陈述。