MySQL INSERT到select * from,默认时间戳列

时间:2016-08-02 11:33:18

标签: mysql

这是一个简单的问题,但我觉得应该有一个优雅的解决方案。我有一个使用这个语句的脚本:

insert into table1 select * from table2 where pk = "'.$pk.'";

最近,我想在table1的末尾添加一列,这是一个默认值为now()的时间戳列。这通常有效,我希望不必更改上面的语句,但是如果我添加新的timestamp列,上面的语句将失败并出现以下错误:

  

列数与值计数

不匹配

2 个答案:

答案 0 :(得分:1)

以下是2个解决方案,要么指定列列表

insert into table1 (col1, col2) select col1, col2  from table2 where pk = "'.$pk.'";

在table1中创建相同的列以避免查询中的列列表

答案 1 :(得分:0)

抱歉,经常发生这种情况,一旦我在stackoverflow上问我的问题,我最终会尝试一些有效的方法。虽然我丢失了新列的默认功能,但我能够将问题中的语句改为以下语句。由于最后一列在这种情况下是硬编码的,因此它的工作方式仍然相同。

master