我在 MySQL 中使用 InnoDB 表。应用程序是用 PHP 编写的,但理想情况下,这一切都可以通过查询来完成。我有几个具有典型整数 auto_increment 主键的表。有时我需要复制行,但如果没有新的主键值,我就无法做到这一点。如果我对查询中的列列表进行硬编码,这将是微不足道的,但我想避免这种情况。我编写了使用临时表的代码,因此我可以在插入之前摆脱现有的主键值,但显然这不是复制安全的(并且 MySQL 5.1 文档在使用临时表时可能导致隐式提交的查询不一致)。
我基本上想要与INSERT IGNORE
. 我想要一个新的主键值,而不是更新现有的行。有没有一种合理的方法可以在没有硬编码列列表的情况下做到这一点?
编辑:我应该澄清主键不会是唯一需要修改的列。通常还有一个引用不同记录类型的 ID。总体目标是复制现有记录并将其附加到不同的父记录。我的冲动是复制记录,然后在第二个查询中进行任何其他更新。