mysql – 将MyISAM转换为InnoDB,其中表有两列(复合)PK,其中一个是自动递增

我想将一些MyISAM表转换为InnoDB,以便我可以利用外键支持.但是,大多数表使用双列(复合)主键设计,其中一列是自动增量(这是出于历史原因并且还确保自动增量列可以作为一种另一列值的上下文中记录的增量键)

我意识到我们需要取消多列主键才能使用自动增量和InnoDB.我们有成千上万的记录,这些记录与其他表有关系.

有关如何将这些表转换为InnoDB的提示吗?我提出的唯一方法是首先在每个表中添加一个新列,将其设置为唯一的自动增量主键,然后使用脚本更新从属表以指向新的(真正唯一的)主键.

谢谢
史蒂夫

最佳答案 在
MySQL 5.0及更高版本中,您可以将自动增量列作为主键的一部分包含在内,但它必须是索引中的第一个字段.

* … AUTO_INCREMENT列必须作为InnoDB表索引中的第一列出现… *

请查看此处的文档条目http://dev.mysql.com/doc/refman/5.0/en/innodb-auto-increment-handling.html

点赞