MySql 无法将一个表中的值添加到另一个表中

标签 mysql sql database

我的数据库看起来:

DB

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';

CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 ;
USE `mydb` ;

CREATE TABLE IF NOT EXISTS `mydb`.`contacts` (
  `idcontact` INT NOT NULL AUTO_INCREMENT,
  `phone` VARCHAR(45) NULL,
  `email` VARCHAR(45) NULL,
  PRIMARY KEY (`idcontact`))
ENGINE = InnoDB;

CREATE TABLE IF NOT EXISTS `mydb`.`adresses` (
  `idadress` INT NOT NULL AUTO_INCREMENT,
  `city` VARCHAR(45) NULL,
  `street` VARCHAR(45) NULL,
  `street_number` VARCHAR(45) NULL,
  PRIMARY KEY (`idadress`))
ENGINE = InnoDB;

CREATE TABLE IF NOT EXISTS `mydb`.`employees` (
  `idemployee` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(45) NULL,
  `surname` VARCHAR(45) NULL,
  `adresses_idadress` INT NOT NULL,
  `contacts_idcontact` INT NOT NULL,
  PRIMARY KEY (`idemployee`),
  INDEX `fk_employees_adresses_idx` (`adresses_idadress` ASC),
  INDEX `fk_employees_contacts1_idx` (`contacts_idcontact` ASC),
  CONSTRAINT `fk_employees_adresses`
    FOREIGN KEY (`adresses_idadress`)
    REFERENCES `mydb`.`adresses` (`idadress`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_employees_contacts1`
    FOREIGN KEY (`contacts_idcontact`)
    REFERENCES `mydb`.`contacts` (`idcontact`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

然后我将地址联系人插入表中,如下所示: insert into mydb.contacts(phone,email) values ('123123123','email@gmail.com'); insert into mydb.adresses(city,street,street_number) values ('London','28th Street','13');

<p>And next I want to insert into <strong>employees</strong>: <code> insert into mydb.employees(name,surname) values ('Jack','Reaper');</code></p> <p>And i receive this error:</p>

Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (<code>mydb</code>.<code>employees</code>, CONSTRAINT <code>fk_employees_adresses</code> FOREIGN KEY (<code>adresses_idadress</code>) REFERENCES <code>adresses</code> (idadress) ON DELETE NO ACTION ON UPDATE NO ACTION)

我需要做什么来修复这个问题?

最佳答案

在员工表的插入中,您还必须提供address_isaddress 和contact_idcontact。否则,插入将无法通过。

关于MySql 无法将一个表中的值添加到另一个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48034158/

相关文章:

mysql - 更新表,然后删除行(如果未设置)

mysql - 从 ID 列表中选择数千行的最有效方法

sql - 更改表添加约束时出错

php - mysql数据库问题导师和学员

database - Oracle 数据库多实例配置

php - 如何将 MySQL 数据库实现到网页中?

mysql - 本地MySql数据库导出

php - 从 MySQL 表中选择 MAX 数不起作用

php - 如何管理请求受限的 API 调用

mySQL:将 View 和存储函数与动态参数结合起来