我需要合并来自 2 个不同模式的平行表。 它们几乎相同(某些字段不同),但 ID(它们的 PK)不同。
我需要让一张表包含平行行的相同 ID。 (合并后两张表继续存活,根据ID同步一张表)
最好的方法是什么?
根据第二张表重命名第一张表的ID,然后更改PK的auto_increment值?
使用插入正确 ID 的所需值创建一个临时表,然后删除原始表并重命名临时表?
有没有更好的方法?
此外, 这对索引有何影响?
有没有其他的反响? (除了 foreign_keys 和代码中的位置 - 如果存在 - 使用硬编码 ID 值)
最佳答案
- 别以为你别无选择。您必须生成新的 ID。当您插入记录时,auto_increment 无论如何都会发生。
- 您可以有一个额外的列引用,它可以包含要回溯的原始表键值。
- PK 索引将被重新索引。
其他影响取决于您必须考虑的应用功能。
关于MySQL:更改主键的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5140676/