MariaDB(Mysql)でキー情報を削除する方法

削除前に知るべき情報

キーのインデックスを知る必要があります。

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;

コメント

タイトルとURLをコピーしました