TL;DR
- AUTO_INCREMENT属性のあるカラムで払い出す値は負値を取れないことは有名だけれど
- でも MySQL :: MySQL 5.6 リファレンスマニュアル :: 3.6.9 AUTO_INCREMENT の使用 には書いてなかったな、どこに書いてあるんだっけな。。
- 実はauto_incrementの現在地が符号なしBIGINTの最大値 - 1になるとBIGINTの最大値を払い出すことができない
とある事情があってInnoDBのAUTO_INCREMENT関連のコードを読んでいた時に、innobase_next_autoincの中でこんなコードになっていることに気が付いた。
2497 if (block >= max_value
2498 || offset > max_value
2499 || current >= max_value
2500 …
[さらに読む]