-1

我有一个表测试它有 10 列 20 行。

我需要将此数据移动到具有 11 列的 archive_test 表(与测试表相同的 10 列加上一列是存档日期)。

当我试图插入如下所示的错误时,因为列数不匹配。

insert into archive_test
 select * from test;

请提出更好的方法来做到这一点。谢谢!

4

2 回答 2

2

好吧,显然您需要为所有列提供值,尽管您可以避免这样做,但您还应该明确说明将哪个值插入到哪一列中。如果您在目标表中有一个额外的列,您可以:

  1. 不要客气
  2. 在表中指定一个默认值作为其列定义的一部分
  3. 有一个触发器来填充它
  4. 为该列指定一个值。

例如。

insert into table archive_test (col1, col2, col3 ... col11)
select col1,
       col2,
       col3,
       ...
       sysdate
from test;
于 2013-10-26T14:42:15.783 回答
1

假设这archive_date最后一列:

INSERT INTO archive_test
SELECT test.*, sysdate
FROM   test
于 2013-10-26T14:40:57.227 回答