2014-02-11 105 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定義以爲各個列提供默認值。如果你這樣做,你可以保留上述陳述。