その他
    ホーム 技術発信 DoRuby MySQL の auto_increment をリセットする
    MySQL の auto_increment をリセットする
     

    MySQL の auto_increment をリセットする

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    MySQL の主キーとかに auto_increment 属性を付けておくと連番の ID を自動生成してくれるので便利です。

    データ挿入時に id を指定せずデータ挿入すればよくなり、ユニークな ID が自動で割り当てられます。

    > insert into names( name ) values( 'ヤマダ' );
    > insert into names( name ) values( 'スズキ' );
    > insert into names( name ) values( 'サトウ' );
    
    > select * from names;
    +----+------+
    | id | name |
    +----+------+
    |  1 |ヤマダ|
    |  2 |スズキ|
    |  3 |サトウ|
         :
    +----+------+
    

    便利な auto_increment 属性ですが、コントロールする必要が出た場合に少しコツが必要になります。

    3レコード目が誤って登録した事に気づいて、削除をした場合に
    次にデータを挿入するとauto_increment はリセットされずに id = 4 として 3 件目のデータが挿入されます。

    > select * from names;
    +----+------+
    | id | name |
    +----+------+
    |  1 |ヤマダ|
    |  2 |スズキ|
    |  4 |タナカ|
         :
    +----+------+
    

    これでも問題無いと考えるのであれば特に気にする必要ないですが、連番ではなくなってしまうので、
    auto_increment を自分の意図でリセットしたくなる場合があります。

    その場合は、以下のコマンドを実行します

    alter table names auto_increment = 3;
    

    auto_increment 属性値を強制的に「3」に変更しましたので、この状態からデータ挿入すると
    次に入るレコードの ID は 「3」 になります:

    > select * from names;
    +----+------+
    | id | name |
    +----+------+
    |  1 |ヤマダ|
    |  2 |スズキ|
    |  3 |タナカ|
         :
    +----+------+
    

    まとめ

    基本的には自分のローカル環境でしか行わない作業ですね。
    特に気にならなければ行わない処理なので、連番に出来る方法もあるんだなー
    程度に覚えておけば良さそうです。