728x90
SELECT ~ FOR UPDATE 란
SELECT ~ FOR UPDATE 는 선택된 행들에 대해 배타적으로 LOCK을 거는 것이다.
즉 "데이터 수정하려고 SELECT 했어. 건드리지마 !" 와 같은 뜻이다.
위와 같은 경우 동시제어가 필연적으로 필요하다.
은행의 예금 및 통장의 잔액 변경 시 일관성을 유지하기위해, 영화 및 공연장의 특정 좌석을 예약하기 위해 사용한다.
SELECT FOR UPDATE를 사용하지 않으면 다른 세션에서 업데이트를 하고 있어도 같은 행을 조회가능하며, COMMIT을 하기 전까지는 결과가 반영되지 않는다.
SELECT ~ FOR UPDATE 의 옵션
- SELECT ~ FOR UPDATE: 누군가가 LOCK 중이면 무한정 기다려야 한다.
- SELECT ~ FOR UPDATE NOWAIT: 누군가가 LOCK 중이면 exception 처리한다.
- SELECT ~ FOR UPDATE WAIT 5(초): 누군가가 LOCK 중이면 입력한 시간(초단위)만큼 기다렸다가 exception 처리한다.
'DB > SQL' 카테고리의 다른 글
[SQL] ORDER BY와 JOIN 사용 시 정렬 제대로 안됨... (0) | 2022.10.09 |
---|---|
LEFT JOIN 시 주의할 점 (0) | 2022.09.04 |
[SQL] ROW 중복제거(DISTINCT, GROUP BY) (0) | 2021.10.12 |
댓글