오라클에서는 테이블의 일부 레코드 또는 테이블에 대한 Lock을 걸수 있다.
Lock이 걸린 Record(Table)에 대해서는 Commit, Rollback문을 수행하기 전까지 다른 세션에서 Delete, Update를 할 수 없다.
하지만 Lock을 걸더라도 다른 세션에서 Select는 가능하다.
▣ Table Lock
- 문법 : lock table TABLE_NAME in exclusive mode;
- Table Lock이 걸린 테이블에 대해서는 다른 세션에서 Insert, Update, Delete를 할 수 없다.
- Table Lock이 걸리더라도 다른 세션에서 Select는 가능하다.
- Commit, Rollback 문장 실행으로 Lock을 풀 수 있다.
▣ Record Lock
- 문법 : select * from TABLE_NAME where CONDITION for update;
- "for update" 키워드를 이용한다.
- "for update" 를 이용한 Select 문에서의 CONDITION에 해당하는 레코드들에 대해 Lock이 설정된다.
- Lock이 걸린 Record들에 대해서는 다른 세션에서 Delete, Update를 할 수 없다.
- Lock이 걸리지 않은 Record들에 대해서는 다른 세션에서 Delete, Update를 할 수 있다.
- Record Lock을 걸더라도 다른 세션에서 테이블에 대한 Insert는 가능하다.
- Record Lock이 걸리더라도 다른 세션에서 Select는 가능하다.
- Commit, Rollback 문장 실행으로 Lock을 풀 수 있다.
[Example1] - Table Lock
-- EMP 테이블에 대해 Insert, Delete, Update를 금지한다.
[Example1] - 모든 레코드에 대한 Record Lock
-- EMP 테이블의 모든 레코드에 대해 Delete, Update를 금지한다
[Example1] - 일부 레코드에 대한 Record Lock
-- EMP 테이블에서 "empno = 100" 조건의 레코드에 대해 Delete, Update를 금지한다
☞ 본문 출처 : http://www.enjoydev.com/blog/46
☞ 본인의 글 입니다. 이 글을 다른 곳에 게재하는 경우 본문 출처를 밝혀주시기 바랍니다.
☞ 위 내용은 오라클 문서에 의한 내용이 아닌, 실무 적용에 따른 경험의 내용을 기술한 것입니다. 잘못된 내용이 있는 경우 지적 바랍니다.
Lock이 걸린 Record(Table)에 대해서는 Commit, Rollback문을 수행하기 전까지 다른 세션에서 Delete, Update를 할 수 없다.
하지만 Lock을 걸더라도 다른 세션에서 Select는 가능하다.
▣ Table Lock
- 문법 : lock table TABLE_NAME in exclusive mode;
- Table Lock이 걸린 테이블에 대해서는 다른 세션에서 Insert, Update, Delete를 할 수 없다.
- Table Lock이 걸리더라도 다른 세션에서 Select는 가능하다.
- Commit, Rollback 문장 실행으로 Lock을 풀 수 있다.
▣ Record Lock
- 문법 : select * from TABLE_NAME where CONDITION for update;
- "for update" 키워드를 이용한다.
- "for update" 를 이용한 Select 문에서의 CONDITION에 해당하는 레코드들에 대해 Lock이 설정된다.
- Lock이 걸린 Record들에 대해서는 다른 세션에서 Delete, Update를 할 수 없다.
- Lock이 걸리지 않은 Record들에 대해서는 다른 세션에서 Delete, Update를 할 수 있다.
- Record Lock을 걸더라도 다른 세션에서 테이블에 대한 Insert는 가능하다.
- Record Lock이 걸리더라도 다른 세션에서 Select는 가능하다.
- Commit, Rollback 문장 실행으로 Lock을 풀 수 있다.
[Example1] - Table Lock
-- EMP 테이블에 대해 Insert, Delete, Update를 금지한다.
LOCK TABLE EMP IN exclusive mode
[Example1] - 모든 레코드에 대한 Record Lock
-- EMP 테이블의 모든 레코드에 대해 Delete, Update를 금지한다
SELECT *
FROM EMP
FOR UPDATE
FROM EMP
FOR UPDATE
[Example1] - 일부 레코드에 대한 Record Lock
-- EMP 테이블에서 "empno = 100" 조건의 레코드에 대해 Delete, Update를 금지한다
SELECT *
FROM EMP
WHERE empno = 100
FOR UPDATE
FROM EMP
WHERE empno = 100
FOR UPDATE
☞ 본문 출처 : http://www.enjoydev.com/blog/46
☞ 본인의 글 입니다. 이 글을 다른 곳에 게재하는 경우 본문 출처를 밝혀주시기 바랍니다.
☞ 위 내용은 오라클 문서에 의한 내용이 아닌, 실무 적용에 따른 경험의 내용을 기술한 것입니다. 잘못된 내용이 있는 경우 지적 바랍니다.
댓글을 달아 주세요