読者です 読者をやめる 読者になる 読者になる

【MySQL】外部キー制約を削除する

制約の設定をしたものの、テストデータの投入段階でinsertを阻止してくる邪魔なforeign keyに悩まされたので、一時的に参照整合性の制約を削除します。

環境

MySQL 5.6

手順

まずは、テーブルに設定されている参照制約を確認しましょう。

mysql> SHOW CREATE TABLE something\G
*************************** 1. row ***************************
       Table: something
Create Table: CREATE TABLE `something` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `another_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `somedb_something_a08cee2d` (`another_id`),
  CONSTRAINT `somedb_another_id_3a4999a1_fk_somedb_another_id` FOREIGN KEY (`another_id`) REFERENCES `another_table` (`id`)
) ENGINE=InnoDB CHARSET=utf8mb4
1 row in set (0.00 sec)

上記の結果を見ると、somethingテーブルの外部キーanother_idが、another_tableidに外部キーとして制約が設定されています。
これを削除するには、CONSTRAINTの次に書いてある文字列を指定して下記のコマンドを実行します。

mysql> ALTER TABLE something DROP FOREIGN KEY `somedb_another_id_3a4999a1_fk_somedb_another_id`;

もう一度SHOW CREATE TABLEを実行すると、外部キー制約の項がなくなっていることが確認できます。

参照

MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.1.17.2 外部キー制約の使用