2011-02-09 6 views
1

MySQL의 UNIQUE 제약 조건이 컬럼 단위로 컬럼에 나타나기 때문에 행 단위로 행이 고유한지 확인하는 방법을 찾고 있습니다. 해답을 추측하는 것은 UNIQUE가 되려는 행 당 열을 연결하여 해시를 만드는 것이지만 해당 행의 해시를 저장하는 열에 대해서는 UNIQUE입니다. 또한 행 자체에 대한 ID는 SURROGATE_KEY이므로 컨트롤을 만들지 않으면 행 자체가 항상 UNIQUE가됩니다. 이는 마지막 행의 정수 ID의 +1만큼 증가하는 정수 순열을 의미합니다.MySQL에서는 한 행에 UNIQUE 제약 조건을 적용 할 수 있습니까?

+2

많은 수의 필드가 있으면 성능이 떨어질 수 있지만 모든 필드가 나열된 고유 키를 추가하면됩니다. ID 필드를 제외해야하므로 원하는 고유성이 깨질 수 있습니다. –

+1

고유 한 열을 사용하지 않고 행이 고유한지 확인하고 싶습니다. 그러나 기본 키의 존재로 인해 모든 테이블의 행이 고유하지는 않습니까? – ryebr3ad

+0

@ ryebr3ad : 기본 키가 고유 한 경우에만 키가 자연스러운 경우에만 작동합니다. 그렇지 않은 경우 인공 생성 순차 정수입니다. – blunders

답변

4

UNIQUE 다중 색인 열을 만들 수 있습니다.

+0

다중 열 UNIQUE는 열의 콤보에있는 UNIQUE가 아닌 둘 이상의 열에있는 UNIQUE 인 것처럼 보입니다. 틀렸어? – blunders

+0

잘못 되었나요? 어떤 의미에서? '(col1, col2)'에 UNIQUE 인덱스를 생성하면, 두 열에 정확히 같은 값을 가진 행이 두 개 있는지 확인합니다. – Mchl

3

행을 확실히 보장하는 주요 방법은 모든 열에 UNIQUE 제약 조건을 사용하거나 모든 열에 유사 색인 UNIQUE 색인을 만드는 것입니다. 두 개의 열에 동일한 입력을 허용하도록 지정할 수 있지만 고유 한 구별이 필요하면 기본 키 (기본적으로 ID 열) 이상의 것이 필요하지 않습니다. 당신이 할 수있는 또 다른 일은 InfiniDB과 같은 열 저장소 데이터베이스로 전환하는 것입니다 (MySQL 프론트 엔드 또는 MonetDB). 둘 다 오픈 소스 대안입니다.

+0

기본 키는 UNIQUE이며 인공 생성 순차 정수이기도합니다. – blunders

관련 문제