작성
·
255
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예
[질문 내용]
기본적인 Lock설정시에 해당 레코드의 update 쿼리나 혹은 수정쿼리가 발생할경우에는 commit되기전까지는 접근이 안된다고하셨는데
그러면 만약에
update set money=
(select money from member where member_id='memberA')-3000
where member_id='memberA'
아예 update내부의 select문도 실행되지않는 상태로 존재하는건가요?
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다.
Lock에 대해 궁금하신 내용이 있으시군요. 질문하신 내용은 트랜잭션과 관련된 lock의 시점과 범위에 대한 이해와 관련이 있습니다.
제가 찾은 답변 중에 “lock 이 걸리는 시점에 대한 의문”이라는 제목의 글이 있는데, 여기에서 비슷한 상황에 대해서 토론하고 있습니다. 이 글에서는 트랜잭션 시작 시점(setAutoCommit(false)
)과, 실제 update
쿼리가 수행되기 전후의 lock 상태에 대해서 설명하고 있으며, 다른 DB 세션에 의한 데이터 수정 가능성에 대해서도 언급하고 있습니다.
질문에 대한 답변을 찾기 위해서는 아래의 글을 참고하시면 도움이 될 것 같습니다.
또한, select문 내부에서의 잠금 처리와 관련하여 “락 잡을 경우 조회가 안되는데요”라는 제목의 글에서도 세션 간 lock 처리와 관련된 질문에 대한 답변을 확인하실 수 있습니다.
해당 링크들을 참조하시면 질문하신 내용에 대한 해답을 찾으실 수 있을 것입니다.