Database/MySQL

[MySQL] 유니크 / 이중유니크 설정하는 방법(Error Code : 1062. Duplicate entry가 나오는 이유)

Mei99 2024. 5. 20. 10:06

같은 데이터가 중복되어서 들어가면 안되는 경우, 유니크 처리해야 한다.

중복된 데이터가 있으면 유니크 작업이 안되기 때문에, 유니크 설정 작업전에 중복 데이터가 있다면 삭제해야 한다.

 

 

 

1. 유니크 설정방법

원하는 컬럼에 UQ 를 체크해 준다.

 

 

 

위에서 UQ 체크한 email의 인덱스가 UNIQUE 처리되어 있다.

 

 

 

'abc@naver.com' 데이터가 저장되어 있는 user 테이블에

해당 값을 한번 더 insert를 하면, eamil은 유니크 처리되어 있기 때문에,

Error Code : 1062. Duplicate entry  오류가 발생하고, 중복 데이터 저장을 제한한다.

 

 

 

 

2. 이중 유니크 설정방법

두 개 이상의 컬럼값을 결합해서 유니크하게 설정하기

 

예를 들어, 내가 찜한 영화목록이 있다고 했을때, 

같은 영화를 두 번 찜할 수는 없다.

 

그렇게 하기 위해서는, 두 컬럼 결합을 유니크하게 하는, 이중 유니크 설정을 해줘야 한다.

 

테이블 설정 - Indexes 탭에서,

movieId와 userId 결합된 키 값을 만들고,

Type을 UNIQUE로 선택해 준다.

 

 

이중유니크 설정 후, 동일 값을 두 번 insert 하게 되면 

insert into favorite
(movieId, userId)
values
(10, 1) ;

insert into favorite
(movieId, userId)
values
(10, 1) ;

 

Error Code : 1062. Duplicate entry 오류가 발생된다. 유니크 설정이 잘 되었다.