当我使用PHP和Ajax表单向mysql添加数据时出现以下错误:
SQLSTATE [23000]:完整性约束违规:1452无法添加或 更新子行:外键约束失败 (
ncd
。patient_med_history
,CONSTRAINTfk_patient_medication_patient1
FOREIGN KEY(patient_id
)参考patient
(patient_id
)ON UPETE CASCADE ON UPDATE CASCADE)
以下是两个表格:
CREATE TABLE IF NOT EXISTS `ncd`.`patient` (
`patient_id` VARCHAR(45) NOT NULL,
`patient_name_en` VARCHAR(55) CHARACTER SET 'utf8mb4' COLLATE
`patient_status` VARCHAR(15) NULL,
PRIMARY KEY (`patient_id`),
INDEX `fk_patient_clinic1_idx` (`clinic_id` ASC),
CONSTRAINT `fk_patient_clinic1`
FOREIGN KEY (`clinic_id`)
REFERENCES `ncd`.`clinic` (`clinic_id`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
这里是外键所在的另一个表:
CREATE TABLE IF NOT EXISTS `ncd`.`patient_med_history` (
`patient_medication_id` INT NOT NULL AUTO_INCREMENT,
`patient_medication` VARCHAR(55) NULL,
`disease` VARCHAR(80) NULL,
`patient_id` VARCHAR(45) NOT NULL,
`clinic_id` VARCHAR(45) NULL,
PRIMARY KEY (`patient_medication_id`),
INDEX `fk_patient_medication_patient1_idx` (`patient_id` ASC),
CONSTRAINT `fk_patient_medication_patient1`
FOREIGN KEY (`patient_id`)
REFERENCES `ncd`.`patient` (`patient_id`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
PS
有些行如何添加3行,之后我发现此错误并且不再添加任何行
答案 0 :(得分:1)
当发生完整性约束错误时,表示您的表格中包含 FK 的字段到另一个表,因此您尝试添加值这个字段不存在于另一个表中。
当您删除时,如果您不首先从父母那里删除,则无法从拥有FK的儿童中删除。