MySQL

없으면 insert, 있으면 update (ON DUPLICATE KEY UPDATE 활용)

PT sun 2020. 12. 17. 14:44

 

기존의 DB
변경 후 DB

 

PK 인 SEQ 가 중복일 때, IMAGE 가 update 된다.

PK 와 동일한 레코드를 insert 하려고 하면 insert 가 아닌 update 를 수행한다.

이 때, update 하고자 하는 대상을 ON DUPLICATE KEY UPDATE 에 적어주었다.

 

 

 

 

 

 


+) 다른 예시

 

 

 

기존의 내용
수정하고자 하는 내용

 

위와 같이 수정하고자 하는 항목을 1개든, 2개든 여러개든 수정할만큼 하고 나서 수정버튼을 누르면

 

 

 

 

 

 

 

기존 DB

 

변경된 DB

위의 DB 내용이 변동사항이 생긴대로 업데이트 해주는 기능을 구현하기를 원했다.

 

 

 

 

사용자가 실제로 내용 자체를 업데이트 했는가에 상관없이 모든 카테고리와 해당하는 시퀀스들을 담은 리스트를 가져온다.

여기서 포인트는 ON DUPLICATE KEY UPDATE 부분이다.

리스트를 가지고 반복문을 돌리면서 SEQ, CATEGORY 를 insert 하되, 기존에 중복되는 값은 update 되는 방식.

즉, 쉽게 말해 실질적으로 변경 여부와 상관없이 내용을 통째로 덮어 씌운다는 것이다.

(변경되는 부분만 업데이트 하는 로직이면 좋을 것 같지만 잘 모르겠어서..)

 

 

 

 

 

 

 

참고

www.cubrid.com/faq/3794601

 

CUBRID | FAQ & TIP - 데이터 존재하면 update, 존재하지 않으면 insert 방법(ON DUPLICATE KEY UPDATE)

응용 개발을 진행하는 중 저장하고자 하는 데이터가 이미 존재하는지 여부에 따라 insert, update를 결정해야 하는 경우가 있다. 이러한 경우 보통 아래와 같은 절차에 따라 작업을 수행하게 된다. 1

www.cubrid.com

 

'MySQL' 카테고리의 다른 글

MySQL Workbench 맥 단축키(shortcuts)  (1) 2020.03.24
MySQL 사용법  (0) 2020.03.19