Database/Oracle

[오라클] LOCK ROW 문

데브포유 2009. 10. 14. 11:30
반응형
SELECT 절을 이용해서 특정 row의 컬럼들에 대해 lock를 설정할 수 있음.
lock은 commit이나 rollback를 만날때까지 유요함.
lock row문은  형식은 아래와 같습니다.
------------------------------------------------------
select <lock를 설정할 컬럼리스트>
from 대상테이블
where 조건
for update of <lock를 설정할 컬럼리스트> nowait;

------------------------------------------------------
for update of 뒤에 컬럼명을 명시하지 않으면 해당 row 전체가 lock으로 설정됩니다.
그리고 11g 부터 좋은 lock row 문에 유용한 옵션이 추가되었는데요 바로
SKIP LOCKED 입니다.
즉 for update skip locked 라고 하면 현재 lock이 안걸린 row만 조회해서 lock를 거는
겁니다. 다른 세션에서 이미 lock이 걸린 row를 조회했다면 3초후에 에러가 발생하죠.
이런 경우에 대한 훌륭한 해결책인듯 싶습니다.

특정 값을 업데이트 하는데 DB가 아니 CS에서 처리하는 시간이 오래 걸릴 경우
사용하면 될것 같은데 아직 한번도 사용해 보질 못했네요.
반응형