- 레코드 추가(생성)시 없으면 추가하고, 데이터가 이미 있으면 업데이트 하는 방법 ( 한방 쿼리 )

 

1. 칼럼을 UNIQUE로 설정

 

ALTER TABLE users ADD UNIQUE (email);

 

 

2. 쿼리

 

INSERT INTO users (email, name) VALUES (?, ?)

ON DUPLICATE KEY UPDATE name = ? ;

 

 

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

* INSERT IGNORE

    - 이미 값이 있으면 추가하지 않기 ( = 없으면 추가하기 )

    - IGNORE 를 사용하면 발생한 에러가 무시됨

 

INSERT IGNORE INTO `users` SET `email` = 'email1';  

    - 위 쿼리에서 `email` 칼럼이 에 UNIQUE 설정이 되있으면 

    이미 값이 있는 경우 에러가 발생하고 IGNORE를 통해 이 에러가 무시되면서 

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

 

 

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

// 참고  REPLACE 명령

-- 주의! 무조건 기존 것을 지우고 새로 생성

 

REPLACE INTO users (email, name) VALUES (?, ?);

 

 

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

// 참고

https://stackoverflow.com/questions/15383852/sql-if-exists-update-else-insert-into

https://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html

https://dev.mysql.com/doc/refman/8.0/en/replace.html

 

 

반응형
Posted by codens