캠핑과 개발

테이블에서 특정조건의 데이터가 있을 경우 업데이트, 없을 경우 인서트 해야 하는 상황이 종종 발생하는데,
이럴 경우, 오라클 9i 이상에서는 MERGE INTO 쿼리를 이용하여 한번에 해결할 수 있다.

1. 서로 다른 테이블일 경우,
MERGE INTO insert_table_name alias
USING select_table_name alias
ON (select_table 조건절)
 WHEN MATCHED THEN  -- 조건에 맞다면..
 UPDATE SET col1=val1,..

 WHEN NOT MATCHED THEN  -- 조건에 맞지 않는다면,
 INSERT (col1, col2,..)
 VALUES(val1, val2,..)

위의 경우, 테이블명을 명시했기 때문에, UPDATE(INSERT) 에 테이블명을 따로 쓰지 않는다.

2. 하나의 테이블일 경우,
USING 테이블명에 DUAL을 써 준다. 나머지 부분은 같다. 

'개발 > Database' 카테고리의 다른 글

mysql 소스 설치  (0) 2011.11.29
ORACLE 명령문  (0) 2011.08.02
mysql 5.5 db 생성 및 사용자 권한 주기  (0) 2011.03.23
오라클 모니터링 SQL  (0) 2011.02.25
Mysql 버전별 DB, USER 생성하기  (0) 2010.12.29