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