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

标签 mysql sql

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

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (ncd.patient_med_history, CONSTRAINT fk_patient_medication_patient1 FOREIGN KEY (patient_id) REFERENCES patient (patient_id) ON DELETE 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;

附言

一些如何添加 3 行,之后,我遇到了这个错误,不再添加任何行

最佳答案

Integrity Constraint 错误发生时,意味着您有一个表,该表的字段对另一个表具有 FK ,因此您试图在其中添加一个值此字段在另一个表中不存在。

当您改为删除时,如果您不先从父项中删除,则无法从具有 FK 的子项中删除。

关于mysql - 添加到数据库时违反完整性约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44719579/

相关文章:

php - 如何在 MySQL 中编写 IF ELSE 语句

c++ - Qt 程序无法打开我的 MySql 数据库

php - 通过循环将 INSERT 追加到 SQL 中

php - 多条件php/mysql

mysql - 从 MySQL 中提取所有 JSON 键

MySQL:优化包含大量列的表

sql - 存储过程和触发器

sql - 如何选择某些列中具有相同值的所有行

sql - 如何安全地将 varchar(255) 转换为 int?

行的 SQL 批量重新排序