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の設定が完了です。