LoginSignup
0
0

More than 3 years have passed since last update.

【MySQL】連番挿入を楽にする【AUTO_INCREMENT】の連番状態をリセット(初期化)する方法

Last updated at Posted at 2020-06-28

ここにズレた連番があるじゃろ?
( ^ω^)
⊃NOT連番⊂

mysql> select * from shops;
+----------+-----------------------+---------+
| shops_id | shops_name            | parking |
+----------+-----------------------+---------+
|      001 | pizzeria SERICO       | Y       |
|      002 | JAKSON CURRY & COFFEE | N       |
|      004 | Le•ciel               | Y       |
+----------+-----------------------+---------+

これをこうして…
( ^ω^)
≡⊃⊂≡

/* 番号にズレがある箇所のレコードを消去 */
mysql> delete from shops where shops_id = 4;

/* AUTO_INCREMENTの状態リセット(初期化) */
mysql> ALTER TABLE shops AUTO_INCREMENT = 2;

/* 改めてレコード追加 */
mysql> INSERT INTO shops(shops_name, parking)
    -> VALUES ('Le•ciel', 'Y');

こうじゃ
( ^ω^)
⊃YES連番⊂

mysql> select * from shops;
+----------+-----------------------+---------+
| shops_id | shops_name            | parking |
+----------+-----------------------+---------+
|      001 | pizzeria SERICO       | Y       |
|      002 | JAKSON CURRY & COFFEE | N       |
|      003 | Le•ciel               | Y       |
+----------+-----------------------+---------+

連番のズレが発生した経緯

/* shops_id'003'にINSERTするべきデータを間違えた */
mysql> INSERT INTO shops(shops_name, parking)
    -> VALUES ('Cafe Flore', 'N');

mysql> select * from shops; 
+----------+-----------------------+---------+
| shops_id | shops_name            | parking |
+----------+-----------------------+---------+
|      001 | pizzeria SERICO       | Y       |
|      002 | JAKSON CURRY & COFFEE | N       |
|      003 | Cafe Flore            | N       |
+----------+-----------------------+---------+

/* 削除して */
mysql> delete from shops
    -> where shops_id = 3;

/* 再度正しいデータをINSERT */
mysql> INSERT INTO shops(shops_name, parking)
    -> VALUES ('Le•ciel', 'Y');

/* 番号がズレてることに気づく */
mysql> select * from shops;
+----------+-----------------------+---------+
| shops_id | shops_name            | parking |
+----------+-----------------------+---------+
|      001 | pizzeria SERICO       | Y       |
|      002 | JAKSON CURRY & COFFEE | N       |
|      004 | Le•ciel               | Y       |
+----------+-----------------------+---------+

補足

今回のように一度挿入したレコードを削除してもAUTO_INCREMENTの値は増えます。
例えエラーでレコードが挿入できなくても、AUTO_INCREMENTの値は挿入しようとしたレコードの分だけ増え続けます。そして、次にレコードを挿入した時には欠番が発生することになります。

AUTO_INCREMENTはALTER TABLE文で定義を変えられることを知っていれば問題ないです。

mysql> ALTER TABLE 'TABLE名' AUTO_INCREMENT = 1;

・参考
MySQLのAUTO_INCREMENTについて色々と調べてみた。
https://qiita.com/sakuraya/items/0dd0bb4114e56f42556d

0
0
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
0
0