WORK/DB

MYSQL 에서 ORACLE 의 MERGE INTO 기능

im 수캥이 2018. 1. 19. 16:43

MYSQL 있으면 UPDATE 없으면 INSERT


ORACLE 에서 MERGE INTO 기능처럼 없으면 INSERT , 있으면 UPDATE 처리하는 문장이다.


일단 컬럼이 두개있는 테이블이 있다고 가정해 보자.


SELECT

  USER_ID

, USER_NAME

FROM USER_INFO


이 테이블 키에 해당하는 데이터가 존재하면 UPDATE / 없으면 INSERT 하는 문장을 알아보자


CREATE TABLE USER_INFO

(

   USER_ID INT

 , USER_NAME VARCHAR(10)

)


일단 값이 중복되는지를 판단하는 조건은 테이블의 UNIQUE KEY이다. 

그러므로 예를 든 USER_INFO TABLE 에 UNIQUE KEY 가 존재하지 않는다면 TABLE먼저 수정한다.


ALTER TABLE USER_INFO ADD UNIQUE (USER_ID); 


그런 후에 임의의 값을 INSERT !


INSERT INTO USER_INFO VALUES(12345 , '수캥이');


이제 한번 해보장


내 이름이 구려서 멋진 이름으로 INSERT 혹은 UPDATE 하려고 한다.


INSERT INTO USER_INFO VALUES(12345 , '수캥이')

ON DUPLICATE KEY UPDATE

USER_NAME = '최자'



잉 ?

왜 두개가 삽입 되었다고 나오지 ㅎㅎ


그런데 결과는



오호


멋지게 잘 변경 되었고만 ! ㅎㅎ


"INSERT 문장"

ON DUPLICATE KEY UPDATE

"UPDATE 문장"


이것만 기억한다면 !


이제 java단에서


count(*) 조회해서 


if( cnt > 0 ){

update();

} else {

insert();

}


는 그만 ~~ 



이상으로 MYSQL 에서 ORACLE 의 MERGE INTO 기능에 대해 알아 보았습니다.