0

用户表中的外键似乎不允许我输入我的数据,主表是公司表。

我尝试将 companyid 作为用户表中的非主键,但没有太多用处

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 `webpage` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
USE `webpage` ;

-- -----------------------------------------------------
-- Table `webpage`.`company`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `webpage`.`company` (
  `idcompany` INT NOT NULL,
  `name` VARCHAR(45) NOT NULL,
  `user_id` INT NOT NULL,
  PRIMARY KEY (`idcompany`),
  INDEX `fk_company_user1_idx` (`user_id` ASC),
  CONSTRAINT `fk_company_user1`
    FOREIGN KEY (`user_id`)
    REFERENCES `webpage`.`user` (`iduser`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `webpage`.`user`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `webpage`.`user` (
  `iduser` INT NOT NULL,
  `username` VARCHAR(45) NOT NULL,
  `password` VARCHAR(45) NOT NULL,
  `email` VARCHAR(45) NOT NULL,
  `first_name` TEXT NOT NULL,
  `last_name` TEXT NOT NULL,
  `gender` TEXT NOT NULL,
  `company_id` INT NOT NULL,
  PRIMARY KEY (`iduser`),
  INDEX `fk_user_company_idx` (`company_id` ASC),
  CONSTRAINT `fk_user_company`
    FOREIGN KEY (`company_id`)
    REFERENCES `webpage`.`company` (`idcompany`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

这是显示的错误消息

无法添加或更新子行:外键约束失败(webpage. users, CONSTRAINT fk_users_company1FOREIGN KEY ( company_idcompany) REFERENCES company( idcompany) ON DELETE NO ACTION ON UPDATE NO ACTION)

4

1 回答 1

1

这看起来像是对我的循环引用。

您不能插入没有用户的公司,也不能插入没有公司的用户。您也不能一次插入两个表。

决定你是否真的需要这种关系。如果存在一对一的关系,您可能只能处理一张表。如果一家公司有多个用户,您可以从公司表中删除 user_id。如果一个用户可以属于多个公司,您可以创建一个以 company_id、user_id 对作为记录的成员资格表。

如果这样做,您可能需要删除外键和非空约束。

于 2019-05-29T15:10:50.047 回答