在一端将所有行从一个表插入另一个+时间戳

时间:2011-06-16 14:16:55

标签: php mysql

我正在创建一个更改日志数据库,它与我的活动数据库完全相同,只是它在最后有一个更改的DATE字段。

db基本上是一个主键id,以及大约50个不同数据类型的其他列。我在PHP中的脚本是它尝试插入新的ID,如果它获得重复主键的错误消息,那么它应该获取该行,将其插入到我的备份数据库中,并使用curdate()调用作为最终日期值,从我的第一个数据库中删除该条目,然后插入新条目。

我已经完成了脚本的所有其他部分,除了我必须从第一个表中插入所有内容的部分+ curdate()的额外列。或者如果有一个更好的解决方案来解决我的插入备份数据库的问题,当有相当多的行时出现重复的主键时请分享它。

2 个答案:

答案 0 :(得分:3)

你可以进行INSERT INTO SELECT:

INSERT INTO `backupTable` SELECT *, NOW() FROM `originalTable` WHERE id = '$id';

您必须为要复制到备份数据库的条目指定ID您还必须确保ID不在您的备份表中。您可以使用REPLACE INTO来解决此问题。

REPLACE INTO `backupTable` SELECT *, NOW() FROM `originalTable` WHERE id = '$id';

<击>

答案 1 :(得分:2)

基本上,您可以使用TIMESTAMP创建CURRENT_TIMESTAMP列作为默认值。 当您向该表插入一行时,将自动插入当前日期/时间。 那是你在找什么?

BTW:我建议在源代码中解决问题,并确保不会将重复的主键插入数据表中。 为此,您可以使用SELECT LAST_INSERT_ID();