MySQL:更改主键的 ID

标签 mysql primary-key auto-increment

我需要合并来自 2 个不同模式的平行表。 它们几乎相同(某些字段不同),但 ID(它们的 PK)不同。

我需要让一张表包含平行行的相同 ID。 (合并后两张表继续存活,根据ID同步一张表)

最好的方法是什么?

  • 根据第二张表重命名第一张表的ID,然后更改PK的auto_increment值?

  • 使用插入正确 ID 的所需值创建一个临时表,然后删除原始表并重命名临时表?

  • 有没有更好的方法?

此外, 这对索引有何影响?

有没有其他的反响? (除了 foreign_keys 和代码中的位置 - 如果存在 - 使用硬编码 ID 值)

最佳答案

  1. 别以为你别无选择。您必须生成新的 ID。当您插入记录时,auto_increment 无论如何都会发生。
  2. 您可以有一个额外的列引用,它可以包含要回溯的原始表键值。
  3. PK 索引将被重新索引。

其他影响取决于您必须考虑的应用功能。

关于MySQL:更改主键的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5140676/

相关文章:

mysql - 我可以在具有 AUTO_INCREMENT 属性的列中使用零吗

ruby-on-rails - 将具有范围的自动增量添加到迁移文件 rails 中的现有列

mysql - 将值插入到高于当前自动增量/标识值的自动增量/标识列中

mysql - 数据库中的 order by 和 Ruby 中的 sort 哪个更高效?

mysql - SQL 非常简单的嵌套查询

php - 似乎无法从数据库获取电子邮件和密码来登录?

sql - 弱实体集中的部分键

c# - 我应该在 Entity Framework 模型中使用 int 还是 long 作为主键

PHP 字符串差异和动态限制

SQL:主键还是不主键?