これらの同時実行制御の両方が平易な英語でどのように機能するかを理解しました。しかし、悲観的な制御がコードでどのように行われなければならないかということにもっと興味がありました。これが私が感じていることです。2 人のユーザーが wiki ドキュメントを更新しようとしているとします。
悲観的コントロール
ここでは、トランザクションを使用するように指示されています。
BEGIN
SELECT DOC FROM WIKI WHERE DOC_ID = 1;
/* business logic */
UPDATE WIKI SET DOC = INPUT WHERE DOC_ID = 1;
END
ただし、これは以前の更新を上書きする傾向があります。selectステートメントの後に書き込みが発生したかどうかを確認するために、トランザクション内で2回目のチェックが必要だと思います。そうであれば、ロールバックするかコミットします。私は正しいですか?