[MySql] 중복 방지 작업
// mysql 데이터베이스에서 레코드 자료 추가시 중복 레코드 방지 방법
Prevent Sending Duplicate record
Best way to avoid duplicate entry into mysql database
https://stackoverflow.com/questions/2219786/best-way-to-avoid-duplicate-entry-into-mysql-database
- 유닉크 인덱스 키 설정
ALTER TABLE thetable ADD UNIQUE INDEX(pageid, name);
- 중복으로 INSERT 될때 무시(에러 발생 안함)
INSERT IGNORE INTO thetable (pageid, name) VALUES (1, "foo"), (1, "foo");
//-------------------------------------
    - 참고) 중복시 특정 칼럼을 UPDATE
INSERT INTO thetable (pageid, name, somefield) 
VALUES (1, "foo", "first") 
ON DUPLICATE KEY UPDATE (somefield = 'first') 
INSERT INTO thetable (pageid, name, somefield) 
VALUES (1, "foo", "second") 
ON DUPLICATE KEY UPDATE (somefield = 'second')
    - 참고) 중복시 카운터 증가
INSERT INTO thetable (pageid, name) 
VALUES (1, "foo"), (1, "foo") 
ON DUPLICATE KEY UPDATE (pagecount = pagecount + 1)
//-----------------------------------------------------------------------------
* 2개의 칼럼의 조합이 중복되지 않게 MySql DB 테이블 설정 
ALTER TABLE `users` ADD UNIQUE `unique_index`(`email`, `user_id`); 
- 유니크 칼럼 추가 가능 
ALTER TABLE `users` ADD UNIQUE `unique_index2`(`nickname`); 
- 유니크 설정 삭제 
ALTER TABLE `users` DROP INDEX `unique_index2`;
//=================== 
* 중복된 값 조회 
select users.* 
from  users join  
     (select email, user_id, count(*) as dup  
      from users  
      group by email, user_id  
      having dup > 1  
     ) `tsum`  
     on users.email = tsum.email and users.user_id = tsum.user_id ;  
//================= 
// 참고
MySQL select records for duplicates using multiple columns 
https://stackoverflow.com/questions/16324328/mysql-select-records-for-duplicates-using-multiple-columns 
MySQL 중복데이터 관리방법 (INSERT IGNORE, ON DUPLICATE KEY UPDATE...)
https://umanking.github.io/2021/07/05/mysql-duplicate-record/
How To Avoid Inserting Duplicate Records in MySQL
https://ubiq.co/database-blog/how-to-avoid-inserting-duplicate-records-in-mysql/