2013-08-01 1 views
0

질문과 관련하여 여러 스레드가 함께있을 경우 트랜잭션 1 개만 작동하는지 확인하는 방법은 무엇입니까?스레드 업데이트 용 SQL 업데이트 및 선택 (다중 스레드가 실행중인 경우 1 개의 업데이트 만 허용됨)

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

위의 샘플. 코드 반환 오류 위에 확신합니다.

I는 C# 및 Oracle SQL로 코딩합니다.

위의 코드에서 COUNTER가 최신 COUNTER (122)와 일치하면 COUNTER를 업데이트하려고합니다.

누군가 나를 도울 수 있습니까 ??

+0

오라클에 지불하는 십오 억 달러 중 일부는 당신을 위해 잠금을 관리하는 일부 소프트웨어 엔지니어에게만 전달됩니다. –

+0

왜 그렇게 말했습니까 ???? –

답변

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

나는 당신의 필요 모르겠어요하지만 목표는 스레드를 직렬화하는 경우는, 행에 대한 잠금을 획득 할 수있을 때 업데이트가 홀더 때까지 다른 스레드를 차단, 발생하는 경우에만 할 수 있습니다 커밋 또는 롤백을 수행합니다.