InnoDBの外部キーを削除する。

外部キーの削除がALTERのリファレンスに無かったんで調べてみたら過去のニュースにヒントがあった。

InnoDB が ALTER TABLE DROP FOREIGN KEY をサポートするようになった。外部キーを破棄する場合は、SHOW CREATE TABLE を使って、内部で生成された外部キー ID を検出する必要がある。

-- 外部キーID名を参照する。
SHOW CREATE TABLE tbl_title;

↑を実行すると↓の結果が返ってくる。この場合だと外部キーIDはfk_tbl_title_tbl_categoryになる。

 :
CONSTRAINT `fk_tbl_title_tbl_category` FOREIGN KEY (`category_id`) REFERENCES `tbl_category` (`id`),
 :

っで、以下のように指定してやると外部キーが消せると。

-- 外部キーID名がfk_tbl_title_tbl_categoryだったので、指定して削除
ALTER TABLE tbl_title DROP FOREIGN KEY fk_tbl_title_tbl_category;