AUTO_INCREMENT PRIMARY KEY ID 列を INT から BIGINT に更新中です。InnoDB テーブルで MySQL バージョン 5.0.82 を使用しています。それらは次のようになります。
FactTable
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| ID | int(11) | NO | PRI | NULL | auto_increment |
| Path | varchar(64) | NO | | NULL | |
+-------+-------------+------+-----+---------+----------------+
AttemptTable
+---------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+----------+------+-----+---------+----------------+
| ID | int(11) | NO | PRI | NULL | auto_increment |
| TriedOn | datetime | NO | | NULL | |
| FactID | int(11) | NO | MUL | NULL | |
+---------+----------+------+-----+---------+----------------+
AttemptTable にはKEY FK1 (FactID)
とがありCONSTRAINT FK1 FOREIGN KEY (FactID) REFERENCES FactTable (ID)
ます。したがって、私の更新のコースは次のとおりです。
ALTER TABLE AttemptTable DROP FOREIGN KEY FK1,
MODIFY ID BIGINT(20) NOT NULL AUTO_INCREMENT,
MODIFY FactID BIGINT(20) NOT NULL;
ALTER TABLE FactTable MODIFY ID BIGINT(20) NOT NULL AUTO_INCREMENT;
ALTER TABLE AttemptTable ADD CONSTRAINT FK1 FOREIGN KEY (FactID)
REFERENCES FactTable (ID);
ここで、これらの変更を行ったときに、制約が削除された後もキー FK1 がまだ存在していることに気付きました。制約が再作成された後も、キー FK1 はまだ適用可能であると思います。しかし、私の質問は、MySQL はこのキーを更新して BIGINT に適用できるようにするのか、それとも INT 機能のみを維持するのかということです。
ALTER TABLE の MySQL リファレンス ガイドを調べたところ、列のサイズがインデックスの長さよりも短くなるとインデックスが短くなるという記述が見つかりましたが、テーブルに何が起こるかを示すものは何も見つかりませんでした基になる列のサイズが大きくなった場合のインデックス。(インデックスも削除して再作成する必要があるかどうか、またはMySQLが期待どおりに機能するかどうかを知りたいです。)