2012-09-18 4 views
0

2 개의 SQL 문이 있으며 동시에 실행할 수 있습니다.T-SQL 동시 선택 및 업데이트 문

UPDATE Requests 
SET IsInProcess = '1' 

2 일이 진행 요청을 계산 :

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

나는 UPDATE 문이 완료된 후에 만 ​​요청을 계산 할 필요가
1 일 업데이트 요청이 처리를 위해 촬영하는 경우, 요청 테이블에서 요청합니다.
이 작업을 수행하기 위해 어떤 트랜잭션 격리 수준이나 테이블 힌트를 사용해야합니까?

+0

"업데이트 문이 끝난 후에 만 ​​요청을 계산해야하는 이유가 확실하지 않습니다." 의미하는 것입니다. 그러나 여러 활동이 동시에 발생하는 즉시, 계산 된 결과는 그 값에 따라 행동하기도 전에 잠재적으로 오래된 것일 수 있습니다. –

답변

0

아무 것도 사용할 필요가 없습니다. READ COMMITTED 및 기본 잠금이이를 수행합니다. 업데이트가 조금 더 일찍 시작되면 업데이트가 계산 될 때까지 기다립니다.

where 절을 사용하면 서버가 전체 테이블에 X 잠금을 사용할 가능성이 높습니다. 이벤트가 발생하지 않으면 잃는 프로세스는 첫 번째 업데이트/읽기 행에서 성공한 프로세스가 잠금을 해제 할 때까지 대기합니다.