반응형
테이블을 생성 시, 중복 저장을 막기 위해 다양한 컬럼에 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으로 변경된 것을 확인할 수 있습니다.
- 유니크 값만 변경이 가능한 것이 아니라 컬럼을 추가로 작성하면 해당 컬럼도 같이 변경된다.
반응형
'BackEnd > DataBase' 카테고리의 다른 글
[MySQL] abs 함수를 통한 절대값 구하기 (0) | 2022.08.26 |
---|---|
[DB] DELETE 쿼리 시 Join 사용하기(MySQL) (0) | 2022.07.20 |
[DB] Join(조인) 정리하기 (0) | 2022.05.07 |
[DB] Transaction(트랜잭션) 정리하기 (0) | 2022.05.07 |
[DB] Oracle vs MySQL vs MSSQL 비교 (0) | 2022.04.20 |