これは仕様によるものであり、常に発生します。
なぜですか?
INSERTを実行している2つの重複するトランザクションを考えてみましょう
- トランザクション1はINSERTを実行し、値(たとえば、42)を取得し、さらに多くの作業を実行します
- トランザクション2はINSERTを実行し、値43を取得し、より多くの作業を実行します
次に
- トランザクション1は失敗します。ロールバックします。 42は未使用のままです
- トランザクション2は43で完了します
連続した値が保証されている場合、すべてのトランザクションは次々に発生する必要があります。あまりスケーラブルではありません。
挿入されたレコードは常に連続したIDを受け取るようにするも参照してください値 (SQL Serverですが、同じ原則が適用されます)