DECLARE @Code INT
SELECT @Code = MAX(Code) From CodeTable ---- (1)
INSERT INTO AnotherTable (Code) VALUES(@Code + 1) ---- (2)
두개의 쓰레드가 모두 INSERT 구문 실행전인 (1) 까지 완료된 상태가 되면, 둘다 같은 @Code 값을 갖게 됩니다.
그 결과로 두번재 테이블에 같은 Code 값이 저장됩니다.
이런 결과를 막기 위해서 C++ 의 동기화 객체처럼...
위 두줄을 어떻게 처리하면 될까요?
ISOLATION 을 가지고 해봐도 안되더군요.ㅠ.ㅠ
|