반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

디케이

[MySQL] INSERT UNIQUE중복 체크 ON DUPLICATE KEY UPDATE 본문

카테고리 없음

[MySQL] INSERT UNIQUE중복 체크 ON DUPLICATE KEY UPDATE

디케이형 2021. 1. 30. 12:41
반응형

UNIQUE 지정

테이블 생성 후 , 중복 저장을 막기 위해 중복 체크 할 column에 unique 키를 등록
데이터 베이스에서 대량의 데이터를 등록할 경우, 키 값이 있음에도 INSERT문을 실행 하게 되면 에러가 발생한다.
해결방법으로는 테이블에 있는 데이터를 모두 삭제 한 후 다시 집어넣는 방법 이지만 번거롭고 위험요소 역시 발생한다.
따라서, 키 값이 있는 경우 INSERT 대신 UPDATE를 사용하면 번거로운 일과 에러를 줄일 수 있다.



TABLE 셋팅 예제


CREATE TABLE attr(
    id INT(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
    regDate DATETIME NOT NULL,
    updateDate DATETIME NOT NULL,
    relTypeCode CHAR(20) NOT NULL, 
    relId INT(10) UNSIGNED NOT NULL,
    typeCode CHAR(30) NOT NULL,
    type2Code CHAR(30) NOT NULL,
    `value` TEXT NOT NULL,
    expireDate DATETIME NULL
);
# 변수찾는 속도 최적화
ALTER TABLE attr ADD UNIQUE INDEX (relTypeCode,relId, typeCode, type2Code);

# 특정 조건을 만족하는 회원 또는 게시물(기타데이터)를 빠르게 찾기 위해
ALTER TABLE attr ADD INDEX (relTypeCode, typeCode, type2Code);


ON DUPLICATE KEY UPDATE 사용


INSERT INTO attr (regDate, updateDate, expireDate, `relTypeCode`, `relId`, `typeCode`, `type2Code`, `value`)
VALUES (NOW(), NOW(),NULL, 'member', 27, 'extra', 'isUsingTempPassword', 1)
ON DUPLICATE KEY UPDATE
updateDate = NOW()
, `value` = 1;

attr 이라는 테이블에 relTypeCode,relId, typeCode, type2Code 칼럼 값을 중복 검사 후 중복 값이 있다면 value 칼럼에 값을 변경 해주는 예제이다.

반응형