SQL

SQL 53 (SELECT FOR UPDATE절 이해하기)

아리빠 2023. 8. 16. 19:37

JONES의 이름과 월급과 부서 번호를 조회하는 동안 다른 세션에서 JONES의 데이터 갱신하지 못하도록하기

 

순서 SCOTT으로 접속한 터미널창1 SCOTT으로 접속한 터미널창2
1 select ename, sal, deptno
from emp
where ename = 'JONES'
for update;
 
2   update emp
set sal = 9000
where ename = 'JONES'
                            ←-------------------------멈춤
3 commit;
커밋 완료
 
4   1행 업뎃

SELECT .. FOR UPDATE 문은 검색하는 행에 LOCK을 거는 SQL문

순서2에서 update하려해도 update가 안되고 waiting

commit 수행 시 LOCK해제되어 업데이트 된다