削除前に知るべき情報
キーのインデックスを知る必要があります。
MariaDB [hogehoge]> show create table hugahuga\G *************************** 1. row *************************** Table: hugahuga Create Table: CREATE TABLE `hugahuga` ( `id` int(11) NOT NULL AUTO_INCREMENT, `author_id` int(11) NOT NULL, `section_id` int(11) NOT NULL, `add_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `author_id` (`author_id`), KEY `section_id` (`section_id`), CONSTRAINT `hugahuga_ibfk_1` FOREIGN KEY (`author_id`) REFERENCES `foo` (`id`), CONSTRAINT `hugahuga_ibfk_2` FOREIGN KEY (`section_id`) REFERENCES `bar` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 1 row in set (0.00 sec)
インデックスは、主キーの場合だと”PRIMARY KEY (`id`)”の”id”が該当し、外部キーの場合だと”CONSTRAINT `hugahuga_ibfk_1`”の”hugahuga_ibfk_1″などが該当します。主キーでも外部キーでも無いけれどキーに設定されているものは”KEY `author_id` (“)”の”author_id”が該当します。
このインデックスを用いてキーを削除していきます。
主キーやただのキーの削除
indexをdropする。
MariaDB [hogehoge]> alter table hugahuga drop index id; Query OK, 0 rows affected, 1 warning (0.05 sec) Records: 0 Duplicates: 0 Warnings: 1 MariaDB [hogehoge]> alter table hugahuga drop index section_id; Query OK, 0 rows affected, 1 warning (0.05 sec) Records: 0 Duplicates: 0 Warnings: 1
foreign keyの削除
foreign keyをdropする
MariaDB [hogehoge]> alter table hugahuga drop foreign key hugahuga_ibfk_1;
コメント