2012-11-06 3 views
0

나는 2낙관적 잠금

UPDATE people SET name = 'Jeff' WHERE id='12345' 

분명히이

스레드 1 개

UPDATE people set id='12346' WHERE name='Jeff' 

스레드처럼 보이는 문으로 별도의 거래에서 데이터베이스를 업데이트하는 두 개의 스레드가있는 경우 여기 경주입니다. 스레드 1이 스레드 2 이전에 ID를 변경하면 12345는 유효하지 않은 ID가됩니다 (다른 사람이 사용하지 않는다고 가정).

낙천적 잠금을 사용할 때 낙관적 잠금 오류가 발생하는 상황 (예 : 부실 레코드 오류)이 궁금합니다. UPDATE/WHERE가 읽기 및 쓰기를 구성합니까 아니면 각각의 UPDATE가 원자 성명으로 실행 되었습니까 (또는 데이터베이스에 따라 다릅니 까?)?

+0

업데이트는 SQL Server의 기본 문이며 대부분의 다른 주요 RDBMS는 –

+0

중복되어 있다고 생각하십니까? http://stackoverflow.com/questions/2133393/is-update-with-nested-select-atomic-operation – durron597

+0

좀 더 구체적인 질문 인 것 같습니다. 이것은 동시 업데이트 처리에만 관련된 것으로 보입니다. – Gian

답변

1

DBMS가 업데이트를 원자 성 문장으로 구현하지 않는 것은 매우 형체가 약하지만, 특정 환경에서이를 확인하는 것이 좋습니다.

+0

고마워, 그게 내가 추측하고 있었지만 확인하고 싶었던거야. –

관련 문제