[SQL] 084. SELECT FOR UPDATE절 이해하기
Updated:
초보자를 위한 SQL 200제 교재를 토대로 공부한 내용입니다.
오라클 SQL을 기반으로 합니다.
실습에 사용한 테이블은 정보문화사 홈페이지에서 받을 수 있습니다.
[예시]
SELECT
… FOR UPDATE
는 검색하는 행에 대해 LOCK을 건다.
예시는 터미널1에서 JONES 데이터를 검색하며 JONES 행에 대해 LOCK을 건다.
터미널2에서 JONES의 SAL(월급)을 수정하면 변경되지 않는다.
터미널1에서 JONES 행에 LOCK을 걸기 때문이다.
-- 기본 옵션으로 사용
-- AUTOCOMMIT 끄기
SET AUTOCOMMIT OFF;
-- 날짜 출력 포맷 변경
ALTER SESSION SET NLS_DATE_FORMAT = 'RRRR-MM-DD';
-- 터미널1에서 실행 후 COMMIT X
SELECT ENAME, SAL, DEPTNO
FROM EMP
WHERE ENAME = 'JONES'
FOR UPDATE;
-- COMMIT;
-- 터미널2에서 해당 명령어 실행시 작업이 되지 않음 위에서 LOCK이 되었기 때문
UPDATE EMP
SET SAL = 9000
WHERE ENAME = 'JONES';
Leave a comment