一意のを生成するには、auto_incrementメカニズムが必要です。 以前に生成したどの値よりも大きい値。 連続を生成することを保証するものではありません 値。
ここでそれについていくつかの議論があります:https://bugs.mysql.com/bug。 php?id =57643
他の理由で値が「失われる」可能性があるため、連続する値を忠実に生成することはほとんど重要ではありません。
- たとえば、UNIQUEKEYやFOREIGNKEYなどの制約に違反しているため、INSERTが失敗します。
- INSERTのトランザクションをロールバックします。
- 成功してコミットしますが、後でその行はあなたまたは別のセッションによって削除されます。
Auto-inc値は、他の同時セッションがその間にさらにid値を生成した可能性があるため、どの種類のキューにも返されません。未割り当てのID値のプールを維持することは、InnoDBの価値がありません。そのプールは、巨大で無駄になる可能性があるためです。
また、ID値を「失う」ことが適切な場合もあります。そうしないと、誰かがDELETEしようとした行が何らかの理由で戻ってきたと思うでしょう。