基于此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
。为什么这不起作用?
答案 0 :(得分:3)
表TestTables
中的 TableID (!)列不允许 NULL 值!此列不在要填充INSERT
的列列表中,因此假定的默认值为NULL
。这就是你得到错误的原因。
您可能需要以下内容:
INSERT INTO TestTables(TestID, TableID)
SELECT TestID, '' FROM Tests
使用默认值填充TableID
列。也许TestTables
表中的其他列也会受到影响,需要进行类似处理。
PS:您还可以修改TestTables
定义,以便为各列提供默认值。如果您这样做,您可以保留上述陈述。