JaeWon's Devlog
article thumbnail
반응형

테이블을 생성 시, 중복 저장을 막기 위해 다양한 컬럼에 Unique Key 를 등록한다.(Primary Key와는 다름)

이때, 데이터를 Insert 하는 경우, Unique Key 가 존재하는 값에 대해 실행하면 에러가 발생한다. 이러한 경우에 해당 row(데이터)를 Delete 후 다시 Insert 하는 방법도 있지만, 삭제에 대한 위험요소도 있다.

이때, on duplicate key update 를 사용하여 Unique Key 값이 있는 경우에 Insert 가 아닌 update를 해주는 방법이 있다.


1. 1. Table(테이블) 생성

- 간단하게 테이블을 생성한다.

<sql />
// 기존 테이블 삭제 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. 2. 데이터 추가

- on duplicate key update 를 사용한 Insert / update 쿼리를 작성한다.

<sql />
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으로 변경된 것을 확인할 수 있습니다.

- 유니크 값만 변경이 가능한 것이 아니라 컬럼을 추가로 작성하면 해당 컬럼도 같이 변경된다.

반응형
profile

JaeWon's Devlog

@Wonol

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!