Programing

MySQL은 고유 제약 조건에서 null 값을 무시합니까?

lottogame 2020. 4. 4. 10:10
반응형

MySQL은 고유 제약 조건에서 null 값을 무시합니까?


고유하고 싶은 이메일 열이 있습니다. 그러나 null 값을 허용하기를 원합니다. 내 데이터베이스에 그런 방식으로 2 개의 null 이메일이있을 수 있습니까?


예, MySQL은 고유 제약 조건이있는 열에서 여러 NULL을 허용합니다.

CREATE TABLE table1 (x INT NULL UNIQUE);
INSERT table1 VALUES (1);
INSERT table1 VALUES (1);   -- Duplicate entry '1' for key 'x'
INSERT table1 VALUES (NULL);
INSERT table1 VALUES (NULL);
SELECT * FROM table1;

결과:

x
NULL
NULL
1

모든 데이터베이스에 적용되는 것은 아닙니다. 예를 들어 SQL Server 2005 및 이전 버전은 고유 제약 조건이있는 열에 단일 NULL 값만 허용합니다.


에서 워드 프로세서 :

"UNIQUE 인덱스는 NULL을 포함 할 수있는 열에 대해 여러 개의 NULL 값을 허용합니다"

이것은 BDB 이외의 모든 엔진에 적용됩니다 .


저자가 원래 이것이 중복 값을 허용하는지 여부를 묻는 지 또는 여기에 " NULL사용하는 동안 중복 을 허용하는 방법 UNIQUE?"을 암시하는 질문이 있는지 확실하지 않습니다. 또는 "하나의 UNIQUE NULL값만 허용하는 방법 "

질문에 이미 답변되었으므로 인덱스 NULL를 사용하는 동안 중복 값을 가질 수 있습니다 UNIQUE.

"하나의 UNIQUE NULL가치 를 허용하는 방법"을 검색하는 동안이 답변을 발견했습니다 . 같은 일을 하면서이 질문에 걸려 넘어 질 수있는 다른 사람들을 위해, 나머지 대답은 당신을위한 것입니다 ...

MySQL에서는 하나의 UNIQUE NULL값을 가질 수 없지만 UNIQUE빈 문자열 값을 삽입하여 하나의 빈 값을 가질 수 있습니다 .

경고 : 숫자 및 문자열 이외의 유형은 기본값이 0이거나 다른 기본값 일 수 있습니다.


널 입력 가능 고유 제한 조건을 피하십시오. 열을 항상 새 테이블에 넣고 널이 아닌 고유 한 값으로 만든 다음 값이있을 때만 해당 테이블을 채울 수 있습니다. 이를 통해 열에 대한 모든 키 종속성을 올바르게 적용하고 널 (null)로 인해 발생할 수있는 문제점을 피할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/3712222/does-mysql-ignore-null-values-on-unique-constraints

반응형