답변:
예, 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 값만 허용합니다.
WHERE column IS NOT NULL내 MySQL 버전에서 지원되지 않으므로 실패 하지 않는 것 같습니다. 내가 어디서 볼 수 있는지 아는 사람 있나요?
저자가 원래 이것이 중복 값을 허용하는지 여부를 묻는 지 또는 여기에 " NULL사용하는 동안 중복 값 을 허용하는 방법 UNIQUE?"을 암시하는 질문이 있는지 확실하지 않습니다. 또는 "하나의 UNIQUE NULL값만 허용하는 방법 "
질문에 이미 답변되었으므로 인덱스 NULL를 사용하는 동안 중복 값을 가질 수 있습니다 UNIQUE.
"하나의 UNIQUE NULL가치 를 허용하는 방법"을 검색하는 동안이 답변을 발견했습니다 . 같은 일을 하면서이 질문에 걸려 넘어 질 수있는 다른 사람들을 위해, 나머지 대답은 당신을위한 것입니다 ...
MySQL에서는 하나의 UNIQUE NULL값을 가질 수 없지만 UNIQUE빈 문자열 값을 삽입하여 하나의 빈 값을 가질 수 있습니다 .
경고 : 숫자 및 문자열 이외의 유형은 기본값이 0이거나 다른 기본값 일 수 있습니다.
UNIQUE제약 때문에가 아니라 제약 때문에 실패한다는 것입니다 NOT NULL. 나는이 답변이 질문과 관련이 없다고 생각합니다. 왜냐하면 질문은 UNIQUE제약 의 동작에 관한 것입니다 .
널 입력 가능 고유 제한 조건을 피하십시오. 열을 항상 새 테이블에 넣고 널이 아닌 고유 한 값으로 만든 다음 값이있을 때만 해당 테이블을 채울 수 있습니다. 이렇게하면 열에 대한 모든 키 종속성이 올바르게 적용되고 널 (null)로 인해 발생할 수있는 문제점을 피할 수 있습니다.