MySQL フィールドにAUTO_INCREMENT属性を追加する

MySQLにて、試しに以下のようなテーブルを作成。(テーブル名:test_users)

mysql> show fields from test_users;
+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| user_id   | int(4)      | YES  |     | NULL    |       |
| user_name | varchar(30) | YES  |     | NULL    |       |
+-----------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)

user_id フィールドにAUTO_INCEREMENT属性をつけたいと思い、以下のSQL文を実行。

ALTER TABLE test_users CHANGE user_id user_id INT( 4 ) AUTO_INCREMENT;

以下のようなエラーで怒られました。キー設定がされていないとダメなんですね。

ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key

そこまでまずは、主キー(PRIMARY KEY) 設定をします。

ALTER TABLE test_users ADD PRIMARY KEY(user_id);

※試したところ、ユニークキーでもAUTO_INCREMENTは使えます。

+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| user_id   | int(4)      | NO   | PRI | NULL    |       |
| user_name | varchar(30) | YES  |     | NULL    |       |
+-----------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)

自動的にNULLフィールドが「NO」に変わりましたね。
そして、AUTO_INCREMENTを設定します。

ALTER TABLE test_users CHANGE user_id user_id int(4) AUTO_INCREMENT;
+-----------+-------------+------+-----+---------+----------------+
| Field     | Type        | Null | Key | Default | Extra          |
+-----------+-------------+------+-----+---------+----------------+
| user_id   | int(4)      | NO   | PRI | NULL    | auto_increment |
| user_name | varchar(30) | YES  |     | NULL    |                |
+-----------+-------------+------+-----+---------+----------------+
2 rows in set (0.01 sec)

これで無事、AUTO_INCREMENTの設定が完了です。

MySQL, 備忘録 | , |