4

外部キーのサポートを利用できるように、MyISAM テーブルの一部を InnoDB に変換したいと考えています。ただし、ほとんどのテーブルは、これらの列の 1 つが自動インクリメントである 2 列 (複合) 主キー設計を使用します (これは歴史的な理由で行われ、自動インクリメント列が一種の他の列の値のコンテキスト内のレコードの増分キー)

自動インクリメントと InnoDB を使用するには、複数列の主キーを廃止する必要があることを認識しています。ただし、何千ものレコードがあり、これらのレコードには他のテーブルとの関係があります。

これらのテーブルを InnoDB に変換する方法に関するヒントはありますか? 私が思いついた唯一の方法は、最初に各テーブルに新しい列を追加し、それを唯一の自動インクリメント主キーとして設定し、スクリプトを使用して依存テーブルを更新して新しい (本当に一意の) 主キーを指すようにすることです.

ありがとうスティーブ

4

1 に答える 1

2

MySQL 5.0 以降のバージョンでは、自動インクリメント カラムを主キーの一部として含めることができますが、インデックスの最初のフィールドにする必要があります。

*...AUTO_INCREMENT カラムは、InnoDB テーブルのインデックスの最初のカラムとして表示される必要があります...*

こちらのドキュメント エントリを確認してくださいhttp://dev.mysql.com/doc/refman/5.0/en/innodb-auto-increment-handling.html

于 2011-09-09T06:03:00.660 に答える