我正在创建一个更改日志数据库,它与我的活动数据库完全相同,只是它在最后有一个更改的DATE字段。
db基本上是一个主键id,以及大约50个不同数据类型的其他列。我在PHP中的脚本是它尝试插入新的ID,如果它获得重复主键的错误消息,那么它应该获取该行,将其插入到我的备份数据库中,并使用curdate()调用作为最终日期值,从我的第一个数据库中删除该条目,然后插入新条目。
我已经完成了脚本的所有其他部分,除了我必须从第一个表中插入所有内容的部分+ curdate()的额外列。或者如果有一个更好的解决方案来解决我的插入备份数据库的问题,当有相当多的行时出现重复的主键时请分享它。
答案 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();