この記事は、以前の「【MySQL】2番目の主キーにauto_incrementしたい」の続編です。
続編、というか、何度もこういう依頼があるたびに、「あれ?修正する場合ってどうするんだっけ?」と忘れてばっかりなので、手順を残しておきます。
要は、これをしたいんですよね。
mysql> show columns from <テーブル名>;
+--------------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+---------------+------+-----+---------+----------------+
| key_a | int(2) | NO | PRI | NULL | auto_increment |
| key_b | int(3) | NO | PRI | NULL | |
+--------------------+---------------+------+-----+---------+----------------+
key_aからkey_bにauto_incrementを張り替えたい。
mysql> show columns from <テーブル名>;
+--------------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+---------------+------+-----+---------+----------------+
| key_a | int(2) | NO | PRI | NULL | |
| key_b | int(3) | NO | PRI | NULL | auto_increment |
+--------------------+---------------+------+-----+---------+----------------+
では、こうなります。
mysql> alter table <テーブル名> change key_b key_b int(3) not null;
mysql> alter table <テーブル名> drop primary key;
mysql> alter table <テーブル名> add primary key (key_b,key_a);
mysql> alter table <テーブル名> change key_b key_b int(3) not null auto_increment;
要は、今まで設定してあったauto_incrementと主キーの設定を外し、主キーの順番を入れ変えて主キー設定の追加、その後、auto_incrementを改めて設定、という運びです。
地味にめんどくさいです。
//