MySQLのAUTO_INCREMENTとは?
AUTO_INCREMENTの基本
MySQLのAUTO_INCREMENT
は、データベースのテーブルで自動的に番号を増加させる機能です。一般的には主キー(PRIMARY KEY
)として使用され、手動でIDを指定しなくても、データの挿入ごとに連番が付与されます。
AUTO_INCREMENTの主な用途
- 会員IDの自動生成:ユーザー登録時に一意のIDを付与
- 注文番号の管理:注文ごとに自動的に番号を割り振る
- 商品コードの付与:商品の一意な識別番号として使用
AUTO_INCREMENTを適切に活用することで、データの一意性を保ちつつ、管理の手間を削減できます。
MySQLでAUTO_INCREMENTの値を確認する方法【3つのSQLコマンド】
AUTO_INCREMENTの確認方法① SHOW TABLE STATUS
を使う
SHOW TABLE STATUS LIKE 'テーブル名';
このコマンドを実行すると、AUTO_INCREMENT
の現在の値がAuto_increment
カラムに表示されます。
AUTO_INCREMENTの確認方法② INFORMATION_SCHEMA.TABLES
から取得する方法
SELECT AUTO_INCREMENT FROM information_schema.tables
WHERE table_schema = 'データベース名' AND table_name = 'テーブル名';
この方法では、対象のテーブルに設定されているAUTO_INCREMENT
の値を直接取得できます。
AUTO_INCREMENTの確認方法③ SHOW CREATE TABLE
を使う方法
SHOW CREATE TABLE テーブル名;
このコマンドを実行すると、テーブルの作成時のDDL(データ定義言語)が表示され、その中にAUTO_INCREMENT
の設定が含まれています。

AUTO_INCREMENTの設定と変更方法
新規テーブル作成時にAUTO_INCREMENTを設定する
新しいテーブルを作成する際に、カラムにAUTO_INCREMENT
を設定するには、以下のSQLを使用します。
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255)
);
既存テーブルのAUTO_INCREMENT値を変更する
既存のテーブルのAUTO_INCREMENT
値を変更したい場合は、以下のコマンドを使用します。
ALTER TABLE users AUTO_INCREMENT = 1000;
このコマンドを実行すると、次に挿入されるデータのIDは1000からスタートします。
AUTO_INCREMENTの増分を変更する(MySQL 8.0以降)
デフォルトでは、AUTO_INCREMENT
の値は1ずつ増加しますが、増加量を変更することも可能です。
SET @@auto_increment_increment = 5;
この設定を行うと、AUTO_INCREMENT
の値が5ずつ増加します。(例: 1, 6, 11, …)
AUTO_INCREMENT使用時の注意点【データ破損を防ぐ】
AUTO_INCREMENTの最大値制限
AUTO_INCREMENT
はカラムのデータ型によって最大値が決まります。例えば、INT
型の場合、最大値は 2,147,483,647 です。これを超えると新しいIDを発行できなくなり、エラーになります。
対策
BIGINT
を使用することで、より大きな値まで対応可能- 必要に応じてデータアーカイブやリセットを検討
データ削除後のAUTO_INCREMENTの動作
MySQLでは、レコードを削除してもAUTO_INCREMENT
の値は自動的にはリセットされません。
DELETE FROM users WHERE id = 100;
このように特定のIDを削除しても、次に挿入される値はそのまま継続されます。
リセットする方法TRUNCATE TABLE
を使用すると、すべてのデータを削除し、AUTO_INCREMENT
の値をリセットできます。
TRUNCATE TABLE users;
この操作を行うと、次の挿入時にIDが1から再スタートします。
トランザクションとAUTO_INCREMENT
MySQLでは、AUTO_INCREMENT
の値はトランザクションのロールバック(ROLLBACK
)をしても元に戻りません。
START TRANSACTION;
INSERT INTO users (name) VALUES ('Alice');
ROLLBACK;
この場合、データは挿入されませんが、AUTO_INCREMENT
の値は増えたままとなります。これにより、IDの飛び番号が発生することがあります。
よくある質問(FAQ)
Q1: AUTO_INCREMENT
の値が飛び飛びになるのはなぜ?
A: INSERT
後にROLLBACK
すると、番号がリセットされないため。削除や失敗した挿入も原因になります。
Q2: AUTO_INCREMENT
の値をリセットするには?
A: TRUNCATE TABLE テーブル名;
を実行するとリセットされます。
Q3: AUTO_INCREMENT
の現在値を取得する方法は?
A: SHOW TABLE STATUS
またはINFORMATION_SCHEMA.TABLES
を使用してください。
Q4: AUTO_INCREMENT
の値が最大値を超えたらどうなる?
A: INT
の最大値を超えるとエラーになるため、BIGINT
に変更する必要があります。