본문 바로가기
CS/데이터베이스

[Oracle] 데이터 수정 (UPDATE), LOCK

by 김크롱 2020. 9. 17.

데이터 수정 (UPDATE)

 

기본

UPDATE tablename
    SET column1=50000, column2=300
    WHERE column3='KOREA';

: COLUMN명 별로 ,(콤마)로 구분해서 입력

- WHERE절을 쓰지 않으면 해당 COLUMN의 모든 행이 변경되므로 WHERE절을 사용하지 않을 때 주의

 

 

서브쿼리 사용

UPDATE tablename
    SET column1=(SELECT column2 FROM tablename WHERE column3='KO')
    WHERE column3='KOREA';

: UPDATE 구문은 모든 절에서 서브쿼리를 작성할 수 있음

 

 

 

 

 

LOCK

: 데이터 일관성 유지

- 같은 데이터를 동시에 갱신할 수 없음

- UPDATE 실행 시 COMMIT을 하기 전까지 해당 행 전체에 LOCK이 걸림

- 먼저 UPDATE를 실행한 곳에서 COMMIT을 하지 않으면 다른 곳에서 실행한 UPDATE는 앞의 UPDATE가 COMMIT 될 때까지 WATING 하게 됨

 

 

 

 

 

SELECT FOR UPDATE

: 검색하는 행에 LOCK 걸기

 

SELECT column1, column2
    FROM tablename
    WHERE column1='KOREA'
    FOR UPDATE;

: 검색하는 행 전체에 LOCK이 걸림

- COMMIT 하기 전까지 다른 곳에서 UPDATE를 진행하지 않고 WATING 하게 됨