안녕하세요~
DB 관련 공부를하다 궁금한 점이있어 질문 드립니다.
A 테이블에 Identity 1,1로 10개의 컬럼이 잡혀있고
No | Column
1 testA
2 testB
3 testC
4 testD
B 테이블에는 A 테이블에서 사용한 No, Column 이 기록됩니다.
UseNo | UseColumn
1 testA
2 testB
사용자는 A테이블에서 사용되지 않은 No, Column을 찾아서 B에 인서트하는 로직인데요
궁금한 점이 만약에 동시에 EXISTS or SELECT로 A 테이블의 다음 Identity 를 찾거나, B에 없는 A를 찾는 차집합을 구하는 쿼리를 실행하는 경우 중복되는 결과 or 이상한 값이 나타날 수 있나요?
물론 현재 제 로컬환경에서는 저런 일이 없지만... 만약에 동접이 많은 시스템의 경우 문제의 소지가 있는지 궁금하여 질문드립니다.
선배님들 답변 부탁드립니다. __;
begin tran
select top 1 1
from dbo.tGameLogA with(updlock)
where cLogNo = 1
insert into dbo.tGameLogB
select a.*
from dbo.tGameLogA as a
left join dbo.tGameLogB as b
on b.cText = a.cText
where b.cText is null
and a.cUseFlag = 1
if @@error != 0 and @@trancount > 0
begin
rollback tran
return
end
commit tran