从select中插入

时间:2014-02-11 10:44:38

标签: sql sql-server

基于此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 个答案:

答案 0 :(得分:3)

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

您可能需要以下内容:

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

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


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