您好我正在尝试创建一个由MySQL组成的唯一键,到目前为止没有问题,我的问题出现在此唯一键中包含的某个字段此时允许为空时唯一键失败,因为它允许在包含null的唯一键所覆盖的字段中保存相同的值。
这是我的桌子。
CREATE TABLE `pacienteprocedures` (
`Id` INT(11) NOT NULL AUTO_INCREMENT,
`Fecha` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`Paciente` BIGINT(15) NOT NULL,
`Diente` INT(11) NULL DEFAULT NULL,
`Zone` INT(11) NOT NULL,
`Procedure` INT(11) NOT NULL,
`Tipe` INT(11) NOT NULL,
PRIMARY KEY (`Id`),
UNIQUE INDEX `Paciente` (`Paciente`, `Diente`, `Zone`, `Procedure`),
INDEX `FK_PacienteDiagnosticos_paciente` (`Paciente`),
INDEX `FK_PacienteDiagnosticos_dientes` (`Diente`),
INDEX `FK_PacienteDiagnosticos_diagnosticos` (`Procedure`),
INDEX `FK_pacienteprocedures_zones` (`Zone`),
INDEX `FK_pacienteprocedures_tipeitems` (`Tipe`),
CONSTRAINT `FK_PacienteDiagnosticos_diagnosticos` FOREIGN KEY (`Procedure`) REFERENCES `items` (`Id`) ON UPDATE CASCADE,
CONSTRAINT `FK_PacienteDiagnosticos_dientes` FOREIGN KEY (`Diente`) REFERENCES `dientes` (`Id`) ON UPDATE CASCADE,
CONSTRAINT `FK_PacienteDiagnosticos_paciente` FOREIGN KEY (`Paciente`) REFERENCES `pacientes` (`Id`) ON UPDATE CASCADE,
CONSTRAINT `FK_pacienteprocedures_tipeitems` FOREIGN KEY (`Tipe`) REFERENCES `tipeitems` (`Id`) ON UPDATE CASCADE,
CONSTRAINT `FK_pacienteprocedures_zones` FOREIGN KEY (`Zone`) REFERENCES `zones` (`Id`) ON UPDATE CASCADE
) COLLATE='utf8_spanish2_ci' ENGINE=InnoDB AUTO_INCREMENT=92;
插入以下内容时
INSERT INTO `odontograma1`.`pacienteprocedures` (`Paciente`, `Zone`, Procedure`, `Tipe`) VALUES (1104, 11, 1, 1);
INSERT INTO `odontograma1`.`pacienteprocedures` (`Paciente`, `Zone`, `Procedure`, `Tipe`) VALUES (1104, 11, 1, 1);
因为在这两种情况下都不会插入Diente
空字段,所以字段保持不变,这就是问题,我不能允许这种情况发生。
任何人都可以提供帮助,谢谢。