用户表中的外键似乎不允许我输入数据,主表是公司表。
我尝试在用户表中将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_company1
外键(company_idcompany
)参考company
(idcompany
)删除不采取行动,而更新不采取行动)
答案 0 :(得分:1)
这看起来像是对我的循环引用。
您不能在没有用户的情况下插入公司,也不能在没有公司的情况下插入用户。您也不能一次插入两个表。
确定您是否真的需要这种关系。如果存在一对一的关系,则您可能只能处理一张桌子。如果公司有多个用户,则可以从公司表中删除user_id。如果一个用户可以属于多个公司,则可以创建一个以company_id,user_id对作为记录的成员资格表。
如果这样做,则可能需要删除外键和非空约束。