MySQL 8.0 以上ではそれ以前のオートインクリメントの取得方法では正しい数値が得られない場合があります。
MySQL >= 8.0 では仕様が変わりインクリメント値を取得する際にキャッシュ(的な)値を参照する仕様になったため正確な値ではなく、テーブルに新データを追加後も何回取得処理を実行しても同じ数値が返ってきます。
通常は次のインクリメント値が何かはあまり気にせず処理することで問題ありませんが、特定の処理においては事前に正しいインクリメント値の取得が必要なケースがあり、そういった場合のための処理が以下となります。
続きを読む »
