ホームページ >データベース >mysql チュートリアル >MySQL の自動インクリメントは、一意の制約がある場合に挿入が失敗してもインクリメントされるのはなぜですか?
質問:
自動インクリメントが行われるのはなぜですか一意のフィールドの場合、挿入が失敗したにもかかわらず、MySQL の値が増加する存在しますか?
説明:
MySQL のデフォルト エンジンである InnoDB はトランザクション的に動作します。したがって、複数のセッションが自動インクリメント列を含むテーブルに同時に挿入しようとすると、特定のシナリオが発生する可能性があります。
結果:
一意のフィールド制約違反により挿入が失敗した場合でも、InnoDB がメモリ内の自動インクリメント カウンターを維持するため、自動インクリメント値はインクリメントされます。サーバーの運用全体を通じて。サーバーが再起動すると、InnoDB はテーブルへの最初の挿入中に各テーブルのカウンターをリセットします。
軽減策:
ID 列のラップの可能性が懸念される場合、より広い範囲の値を提供するには、BIGINT データ型 (8 バイト長) の使用を検討してください。
以上がMySQL の自動インクリメントは、一意の制約がある場合に挿入が失敗してもインクリメントされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。