BackEnd/DataBase
[MySQL] on duplicate key update(Insert 시 값 존재하면 Update)
Wonol
2022. 7. 1. 16:06
반응형
테이블을 생성 시, 중복 저장을 막기 위해 다양한 컬럼에 Unique Key 를 등록한다.(Primary Key와는 다름)
이때, 데이터를 Insert 하는 경우, Unique Key 가 존재하는 값에 대해 실행하면 에러가 발생한다. 이러한 경우에 해당 row(데이터)를 Delete 후 다시 Insert 하는 방법도 있지만, 삭제에 대한 위험요소도 있다.
이때, on duplicate key update 를 사용하여 Unique Key 값이 있는 경우에 Insert 가 아닌 update를 해주는 방법이 있다.
1. Table(테이블) 생성
- 간단하게 테이블을 생성한다.
// 기존 테이블 삭제
DROP TABLE TEST_MEMBER;
// 테이블 생성
CREATE TABLE TEST_MEMBER (
member_seq INT NOT NULL AUTO_INCREMENT
member_id VARCHAR(20),
member_name VARCHAR(30),
member_job VARCHAR(50),
PRIMARY KEY(member_seq),
UNIQUE KEY(member_id)
)ENGINE=InnoDB CHARSET=utf8;
2. 데이터 추가
- on duplicate key update 를 사용한 Insert / update 쿼리를 작성한다.
INSERT INTO TEST_MEMBER(
member_id,
member_name,
member_job
) VALUES (
'jw',
'재원',
'개발자'
)
on duplicate key update
member_id = 'jaewon'
;
- 위 쿼리를 처음 실행하게 되면, 데이터는 Id는 jw, Name은 재원, Job은 개발자로 저장됩니다.
- 확인 후에 다시 쿼리를 재실행하게 되면, Id가 jaewon으로 변경된 것을 확인할 수 있습니다.
- 유니크 값만 변경이 가능한 것이 아니라 컬럼을 추가로 작성하면 해당 컬럼도 같이 변경된다.
반응형