[MySQL]PRIMARY KEY制約とUNIQUE制約を変更


主キーを変更する方法をよく忘れてしまうので、自分用のメモとして残します。

テスト用テーブル

CREATE TABLE employee(
 id int NOT NULL AUTO_INCREMENT
,code varchar(45) NOT NULL
,name varchar(45)
,age int
,PRIMARY KEY(id)
,UNIQUE(code)
);

+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| code  | varchar(45) | NO   | UNI | NULL    |                |
| name  | varchar(45) | YES  |     | NULL    |                |
| age   | int(11)     | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+

PRIMARY KEY制約とUNIQUE制約を変更

ALTER TABLE employee
 DROP PRIMARY KEY
,DROP INDEX code
,ADD PRIMARY KEY (code)
,ADD UNIQUE (id)
;

+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | UNI | NULL    | auto_increment |
| code  | varchar(45) | NO   | PRI | NULL    |                |
| name  | varchar(45) | YES  |     | NULL    |                |
| age   | int(11)     | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+