예) users테이블에 email 이 없는 경우 레코드 자료 생성하기

 

 

    - Unique index 설정이 필요

ALTER TABLE users ADD UNIQUE INDEX(`email`);

 

//-------------------------------------

* 방법 1

    - INSERT IGNORE 사용

    - 일반적인 경우 이미 값이 있는 경우 에러가 발생하지만, IGNORE를 통해 이 에러가 무시되면서 

    결과적으로 아무 동작도 하지 않게 된다

    - 장점 : 빠르고 단순

    - 단점 : 검사할 값을 임의로 정하기 힘듬, Unique Index로 지정된 칼럼만 검사

 

INSERT IGNORE INTO users SET email = 'qwe@qwe.com', name = 'qwe' , tele = '010';



//--------------------------------------

* 방법 2

    - WHERE NOT EXISTS  사용

    - 장점 : 검사할 값을 임의로 정할수 있음

 

INSERT INTO users (email , name, tele)

SELECT * FROM (SELECT 'qwe@qwe.com', 'qwe', '010') AS tmp

WHERE NOT EXISTS (

    SELECT email FROM users WHERE email = 'qwe@qwe.com'

) LIMIT 1;

 



//--------------------------------

// 참고

    - mysql

https://dev.mysql.com/doc/refman/8.0/en/exists-and-not-exists-subqueries.html



https://stackoverflow.com/questions/3164505/mysql-insert-record-if-not-exists-in-table/3164595




Posted by 코덴스

댓글을 달아 주세요