복붙노트

[SQL] INSERT ... ON DUPLICATE KEY (아무것도하지 않고)

SQL

INSERT ... ON DUPLICATE KEY (아무것도하지 않고)

나는 두 개의 열에 대한 고유 키가있는 테이블이 있습니다

CREATE  TABLE `xpo`.`user_permanent_gift` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`fb_user_id` INT UNSIGNED NOT NULL ,
`gift_id` INT UNSIGNED NOT NULL ,
`purchase_timestamp` TIMESTAMP NULL DEFAULT now() ,
PRIMARY KEY (`id`) ,
UNIQUE INDEX `user_gift_UNIQUE` (`fb_user_id` ASC, `gift_id` ASC) );

그 테이블에 행을 삽입 할,하지만 키가 존재하는 경우, 아무것도하지 않는! 키가 존재하기 때문에 오류가 발생하지 않습니다.

나는 다음과 같은 구문이 있다는 것을 알고있다 :

INSERT ... ON DUPLICATE KEY UPDATE ...

하지만 같은 뭔가입니다 :

INSERT ... ON DUPLICATE KEY DO NOTHING 

?

해결법

  1. ==============================

    1.예, 사용 INSERT ... ON DUPLICATE KEY UPDATE 아이디 = 아이디 (이 ID가 자신에게하지 트리거 행의 갱신 할당한다하더라도).

    예, 사용 INSERT ... ON DUPLICATE KEY UPDATE 아이디 = 아이디 (이 ID가 자신에게하지 트리거 행의 갱신 할당한다하더라도).

    당신이 오류 (변환 오류, 외래 키 오류)와 자동 증가 필드 고갈을 걱정하지 않는 경우 (이 행 인해 중복 키에 삽입되지 않은 경우에도 증가 것), 다음 INSERT가 무시 사용합니다.

  2. ==============================

    2.항목이있는 경우 다음 새 항목을 삽입, 삭제하는 것은 고유 키 또는 기본 키와 일치

    항목이있는 경우 다음 새 항목을 삽입, 삭제하는 것은 고유 키 또는 기본 키와 일치

    장점 : 간단합니다.

    단점 : 1. 너무 느리다. 2. 자동 증가 키는 증가 할 것이다.

    장점 : 간단합니다.

    단점 : 1. 자동 증가 키는 계속 증가 할 것이다. 2. 다른 오류는 데이터 변환 오류와 같은 무시됩니다.

    장점 : 자동 증가 키는 증가하지 않습니다.

    단점 : 외모 상대적으로 복잡.

  3. ==============================

    3.사용 ON DUPLICATE KEY UPDATE ..., 음 : 업데이트가 두 번째 작업을위한 자원을 사용하기 때문에.

    사용 ON DUPLICATE KEY UPDATE ..., 음 : 업데이트가 두 번째 작업을위한 자원을 사용하기 때문에.

    사용 INSERT가 무시 ... 음 : 뭔가 잘못되면 당신이 오류를 처리 할 수 ​​있도록 MySQL은, 모든 오류를 표시하지 않습니다. 쿼리에 대해 걱정하지 않은 경우에만 사용합니다.

  4. from https://stackoverflow.com/questions/4596390/insert-on-duplicate-key-do-nothing by cc-by-sa and MIT license