MySQL에서 빈 값을 허용하는 고유 한 제약


125

제품 코드를 저장하는 필드가 있습니다. 코드는 고유하지만 일부 제품에는 단순히 코드가 없습니다. 공급자 코드이기 때문에 코드를 발명 할 수 없습니다.

이런 종류의 제약이 MySQL에서 가능합니까?

저는 저장 프로 시저와 트리거를 사용하는 멍청한 사람이므로 솔루션에 이들 중 하나가 포함되어 있으면 잠시 기다려주십시오.

업데이트 : 열이 Null이 아닙니다. 그것이 내가 이것을 할 수 없었던 이유입니다.



@AmirAliAkbari이 두 가지가 "가능한 중복"으로 서로 연결되는 방식은 재밌습니다. 그러나 이것은 더 오래되었습니다. :)
Pijusn

답변:


182

예, 할 수 있습니다. MySQL 참조 (버전 5.5)를 참조 하십시오 .

UNIQUE 인덱스는 인덱스의 모든 값이 고유해야하는 제약 조건을 만듭니다. 기존 행과 일치하는 키 값이있는 새 행을 추가하려고하면 오류가 발생합니다. 모든 엔진에 대해 UNIQUE 인덱스는 NULL을 포함 할 수있는 열에 대해 여러 NULL 값을 허용합니다.


8
감사. nullable로 만들어야합니다
The Disintegrator

django 모델 에서이 문제가 발생했습니다. nullable로 만드는 것이 작동합니다. 감사합니다
Shrey

13

예, 제품 코드 열을 null로 설정하면 (로 선언되지 않음 NOT NULL) 고유 키는 NULL제품 코드가있는 여러 행을 허용합니다 .


감사. nullable로 만들어야합니다
The Disintegrator

8

MySQL은 여전히 ​​여러 행 NULL이 고유 한 열에 값을 가질 수 있도록 허용합니다 .


감사. nullable로 만들어야합니다
The Disintegrator

@MianAnjum 굵게 : TABLE CREATE table( keyNOT NULL AUTO_INCREMENT, INT (11) fieldTINYINT (1) DEFAULT NULL의 )
폴 노박
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.