3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MySQLでAUTO_INCREMENTをリセットする

Last updated at Posted at 2020-02-14

テーブルのレコードを全削除する前提になります。

TRUNCATE文を使う

TRUNCATE = テーブルのレコード全件削除

mysql> TRUNCATE TABLE ${table_name};

でリセットできます。

ALTER文を使う

ALTER TABLE = テーブル定義を変更
TRUNCATE文でリセットできない場合(または抵抗がある時)はALTER文でリセットできます。

mysql> ALTER TABLE ${table_name} AUTO_INCREMENT=1

でリセットできます。

どんなときに使うか?

リリース前にテストデータを全て削除する時に使います。
TRUNCATE文でできたらそれで良いのですが、
DELETE文で全レコード削除してもAUTO_INCREMENTはリセットできないのです・・・。
例えばユーザーIDにAUTO_INCREMENTを設定しているなら、
ユーザーIDが30まで1件ずつあるレコードを全て削除してから新たにレコードを挿入すると31から始まってしまいます。
それを防ぐためにAUTO_INCREMENTにリセットをかけます。

###参考
【MySQL】auto_increment(オートインクリメント)の連番状態をリセット(初期化)する
全てのデータを削除する(TRANCATE TABLE文)

3
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?