回答編集履歴
1
追記
test
CHANGED
@@ -1,3 +1,33 @@
|
|
1
1
|
AUTO_INCREMENTが最大値+1なので、最後の番号を削除すれば、当然最大値は変わります。
|
2
2
|
|
3
3
|
最大値の番号でないものを削除しても最大値は変化しません。
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
再起動が絡みますが、MYSQLの仕様です。
|
8
|
+
|
9
|
+
[14.6.5.1 従来の InnoDB の自動インクリメントロック](https://dev.mysql.com/doc/refman/5.6/ja/innodb-auto-increment-traditional.html)
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
[MySQL サーバーを再起動するとAUTO_INCREMENT の値が戻る](http://sairoutine.hatenablog.com/entry/2016/04/24/013521)
|
14
|
+
|
15
|
+
> AUTO_INCREMENTした値が一意であることを見越して、
|
16
|
+
|
17
|
+
> 他のテーブルの外部キーにしてたりすると、整合性が取れなくなってしまう。
|
18
|
+
|
19
|
+
>
|
20
|
+
|
21
|
+
> 対策としては
|
22
|
+
|
23
|
+
> ・外部キー制約入れる
|
24
|
+
|
25
|
+
> ・AUTO_INCREMENTに頼らず、別に採番テーブルを用意する
|
26
|
+
|
27
|
+
> ・論理削除してレコードを delete しない(!)
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
8.0だと解消しているようです。
|
32
|
+
|
33
|
+
[MySQL 8.0でInnoDBのAUTO_INCREMENT問題解消を確認してみる](https://qiita.com/hmatsu47/items/4429171c1bbaba564774)
|