添加到数据库时违反完整性约束

时间:2017-06-23 10:48:51

标签: mysql sql

当我使用PHP和Ajax表单向mysql添加数据时出现以下错误:

  

SQLSTATE [23000]:完整性约束违规:1452无法添加或   更新子行:外键约束失败   (ncdpatient_med_history,CONSTRAINT   fk_patient_medication_patient1 FOREIGN KEY(patient_id)参考   patientpatient_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行,之后我发现此错误并且不再添加任何行

1 个答案:

答案 0 :(得分:1)

当发生完整性约束错误时,表示您的表格中包含 FK 的字段到另一个表,因此您尝试添加值这个字段不存在于另一个表中。

当您删除时,如果您不首先从父母那里删除,则无法从拥有FK的儿童中删除。