0

質問に関しては、複数のスレッドが一緒になった場合に 1 つのトランザクションのみが機能するようにクエリを作成する方法を教えてください。

UPDATE DPCM_BRANCH SET COUNTER = COUNTER+1 WHERE BRANCH=213546 and (SELECT COUNTER from dpcm_branch where counter = 122);

以上、ほんの一例。上記のコードがエラーを返すと確信しています。

C# と Oracle SQL でコーディングしています。

上記のコードでは、COUNTER が最新の COUNTER(122) と一致したときに COUNTER を更新したいと考えています。

誰かが私を助けることができますか??

4

1 に答える 1

2
UPDATE DPCM_BRANCH SET COUNTER = COUNTER + 1 
       WHERE BRANCH = 213546 and counter = 122;

私はあなたの必要性を確信していませんが、目標がスレッドをシリアル化することである場合、更新は行のロックを取得できる場合にのみ発生し、所有者がコミットまたはロールバックを行うまで他のスレッドをブロックします。

于 2013-08-01T11:48:56.683 に答える