여기에 기록된 내용은 오래 전에 발생한 버그로, MySQL 제약 조건 및 NULL에 대한 정보를 주로 소개합니다. >. 기사에서 소개는 매우 자세하며 모든 사람을 위한 특정 참고 자료와 학습 가치가 있습니다. 필요한 친구는 아래를 살펴볼 수 있습니다.
서문
이전에 만든 요구 사항으로, 간단히 설명하면 다른 그룹의 MQ 메시지를 수락한 다음 레코드를 삽입하는 것입니다. 데이터베이스 . 반복적인 메시지 전송과 다수의 중복 레코드 삽입을 방지하기 위해 테이블의 여러 열에 고유한인덱스를 추가했습니다.
CREATE UNIQUE INDEX IDX_UN_LOAN_PLAN_APP ON testTable (A, B, C);
ALTER TABLE testTable DROP INDEX IDX_UN_LOAN_PLAN_APP, ADD UNIQUE KEY `IDX_UN_LOAN_PLAN_APP` (A, B, C, D);
datetime 유형이며 NULL이 허용되며 기본값은 NULL입니다. 기본값이 NULL인 이유는 모든 레코드에 이 시간이 없기 때문입니다. 강제로 Magic Value(예: '1970-01-01 08:00:00')를 기본값으로 설정하면 이상하게 보입니다.
블루퀸. . . 문제가 발생했습니다. D를 추가한 후에는 고유성 제약 조건이 기본적으로 유효하지 않습니다.Insert into testTable (A,B,C,D) VALUES (1,2,3,NULL); --- OK Insert into testTable (A,B,C,D) VALUES (1,2,3,NULL); --- OK Insert into testTable (A,B,C,D) VALUES (1,2,3,NULL); --- OK
A UNIQUE index creates a constraint such that all values in the index must be distinct. An error occurs if you try to add a new row with a key value that matches an existing row. For all engines, a UNIQUE index allows multiple NULL values for columns that can contain NULL.
많은 사람들이 MySQL 공식 웹사이트에서 이 문제에 대해 논의했습니다. 어떤 사람들은 이것이 MySQL의 버그라고 생각하는 반면 다른 사람들은 그것이 기능이라고 생각합니다.
MySQL 버그: #8173: 고유 인덱스는 null 값을 사용한 중복을 허용합니다 요약위 내용은 MySQL의 고유 제약 조건 및 NULL에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!