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.