JaeWon's Devlog
article thumbnail
반응형

테이블을 생성 시, 중복 저장을 막기 위해 다양한 컬럼에 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으로 변경된 것을 확인할 수 있습니다.

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

반응형
profile

JaeWon's Devlog

@Wonol

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