sql >> データベース >  >> RDS >> Mysql

トランザクション、コミット、およびロールバックのMySQL自動インクリメント列

    いいえ、自動インクリメントメカニズムは必須 トランザクションを完了する前に別のユーザーが同じテーブルに挿入している可能性があるため、トランザクションの範囲外で作業してください。他のユーザーのトランザクションは、トランザクションが割り当てたばかりの値を使用しているかどうかを知る前に、次の値を割り当てることができる必要があります。

    コメントを再確認してください。もっと明確に言えば、トランザクションの範囲の変更はロールバックされる可能性があります。自動インクリメントカウンターはロールバックされないため、原子性には従いません。 トランザクションの。また、分離にも従いません トランザクションがまだコミットされていなくても、別のトランザクションが次の値を取得するためです。

    自動インクリメントの仕組みは、行を挿入してからトランザクションをロールバックすると、自動インクリメントで割り当てた値が永久に失われる場合があることを意味します。

    しかし、これは大丈夫です。主キーの値は一意である必要がありますが、連続している必要はありません。つまり、行番号ではないので、そのように使用しないでください。したがって、自動インクリメントによって作成された値をデクリメントする必要はありません。



    1. Oracle11gでシーケンスをリセット

    2. SQLiteデータベースは、Android Lをアップグレードした後、<table_name>(列)に警告の自動インデックスを提供します

    3. データブロックのダンプ

    4. Scala SlickでEnumを使用する方法は?