LOCK 은 UPDATE 문을 수행할때 필요한 것.
→ 내가 변경하고자 하는 데이터를 다른 세션이 변경하지 못하도록 막을때 필요
SELECT 절에도 LOCK 을 걸 수 있다.
→ 마지막 절에 for update 라고 작성해 주면 select 절에 lock 이 걸린다.
왜 select 절에도 lock 이 필요할까?
→ 내가 만약 밤 12 시에 오늘의 총 매출 집계를 하고싶고
지금 select 하는 그 시점의 데이터로 집계하고 싶을때
누구도 내가 집계하려는 데이터를 변경하면 안된다. ~
그래서 그 누구도 데이터를 갱신하지 못하게 할때 for update 를 사용한다.
예시
select ename, sal
from emp
where ename = 'KING'
FOR UPDATE ;
-> 마지막 문장에 for update 를입력해 실행 시켜주면 select 절에 lock 이 걸리게 된다.
-> 이렇게 lock 이걸리면 다른 session 에서는 갱신 수정 하지 못한다.
-> commit; 을 수행하면다시 다른 session 에서도 실행된다.
'Oracle > SQL' 카테고리의 다른 글
SQL 서브쿼리를 이용한 DATA 수정 Update (update 절에 튜닝시 merge 만큼빠름) (0) | 2021.11.30 |
---|---|
SQL 서브쿼리를 이용한 DATA 입력 Insert (0) | 2021.11.30 |
SQL 쿼리에 LOCK이 걸리는 경우 (0) | 2021.11.30 |
SQL [TCL] COMMIT / ROLLBACK (0) | 2021.11.30 |
SQL 자동커밋 기능 활성화 시키기 (0) | 2021.11.30 |