728x90
반응형
MySQL 데이터가 없으면 INSERT 하고 있으면 UPDATE 하기
데이터를 입력 받아서 처리 할 때, SELECT로 데이터의 존재를 확인한 다음 INSERT를 할지, UPDATE를 할지 구분하여 처리했던 경우가 있는데, 한번의 쿼리로 데이터를 INSERT 또는 UPDATE 를 할 수 있는 방법이 있다.
이것이 INSERT INTO ON DUPLICATE KEY UPDATE 라는 것이다. 이것은 특정 컬럼에 Unique 하다는 제약조건이 있다면 그 키를 가지고 있는 데이터가 들어오면 INSERT를 실행하고, Unique 한 키 값이 이미 있을 경우에는 UPDATE를 수행하는 것이다.
다음 테이블을 보자. 아래와 같은 구조를 가진 테이블이 있다. UNIQUE 키는 login_id, reg_date 가 되겠다.
테이블에는 아래와 같은 데이터가 있다.
새로운 데이터로 'a', '2017-05-28' 의 중복되는 키값으로 데이터를 추가 또는 업데이트를 하려고 한다.
다음과 같은 SQL문을 수행한다. (중복된 데이터 입력)
INSERT INTO user_detail (login_id, reg_date, work_exec, work_recv) VALUES ('a','2017-05-28',9,8) ON DUPLICATE KEY UPDATE work_exec=9, work_recv=8
다시 테이블의 데이터를 보게 되면 'a', '2017-05-28' 값은 UNIQUE 값이 중복되므로 UPDATE가 수행되었다.
이번엔 다음과 같은 SQL문을 수행한다. (새로운 데이터 입력)
INSERT INTO user_detail (login_id, reg_date, work_exec, work_recv) VALUES ('a','2017-05-20',1,3) ON DUPLICATE KEY UPDATE work_exec=1, work_recv=3
다시 테이블의 데이터를 보게 되면 'a', '2017-05-20' 값은 중복되지 않는 데이터 이므로 INSERT가 수행되었는 것을 볼 수 있다.
728x90
반응형
'프로그래밍 > DB' 카테고리의 다른 글
Oracle에서 like 연산자 (0) | 2018.04.09 |
---|---|
Oracle에서 distinct (0) | 2018.04.09 |
Oracle에서 연결 연산자 (0) | 2018.04.09 |
Oracle에서 Alias [별칭] (0) | 2018.03.27 |
Oracle에서 Insert / Select (0) | 2018.03.22 |