0

あるトランザクションによって読み取られた行が別のトランザクションによって読み取られないという状況をどのように達成できますか?

columnA-F を持つテーブルの 1 つから、max(columnA). 最大値といくつかの計算に基づいて、他の挿入ステートメントを実行する必要があります。

シリアライズ可能な分離レベルでは、2 つのトランザクションが同じ最大値を読み取っています。これにより、1 つのトランザクションでロック待機が発生し、別のトランザクションでデッドロックが発生します。

4

1 に答える 1

0

分離レベルだけに基づいてこれを解決できない場合があります。

設計上の変更として、最大値を個別に保存し、処理済みの最大値、処理済みの最大値、および未処理の最大値という記録とともに 3 段階のフラグを設定することができます。したがって、トランザクションがテーブルから最大値を読み取るたびに、最大値がすでに処理されているかどうかを確認できます。その場合、他の挿入ステートメントは実行されません。

于 2012-08-04T05:58:29.267 に答える