0

同時に実行できる 2 つの SQL ステートメントがあります。
1 つ目は、リクエストが処理のために取得されたときに、Requests テーブルからリクエストを更新します。

UPDATE Requests
SET IsInProcess = '1'

2 つ目は、処理中のリクエストをカウントします。

SELECT COUNT(*)
FROM Requests
WHERE IsInProcess = '1'

更新ステートメントが終了した後にのみ、リクエストをカウントする必要があります。
これを達成するには、どのトランザクション分離レベルまたはテーブル ヒントを使用する必要がありますか?

4

1 に答える 1

0

使用する必要はありません。READ COMMITTEDデフォルトのロックはそれを行います。(更新が少し早く開始された場合、それ以外の場合、更新はカウントされるまで待機します。)

whereあなたの句を考えると、サーバーがXテーブル全体をロックする可能性があります。そうでない場合、負けたプロセスは、勝ったプロセスが最初の更新/読み取り行のロックを解放するまで待機します。

于 2012-09-18T10:21:58.743 に答える