这是我的一张 table :
CREATE TABLE IF NOT EXISTS `mydb`.`Branch` (
`branchID` CHAR(5) NOT NULL,
`branchAddress` VARCHAR(40) NULL,
`branchPhoneNo` VARCHAR(20) NULL,
`productCode` CHAR(5) NULL,
PRIMARY KEY (`branchID`))
ENGINE = InnoDB;
这是该表的插入内容:
START TRANSACTION;
USE `mydb`;
INSERT INTO `mydb`.`Branch` (`branchID`, `branchAddress`, `branchPhoneNo`,
`productCode`) VALUES ('BR198', 'Waterford', '051786796', 'P1234');
INSERT INTO `mydb`.`Branch` (`branchID`, `branchAddress`, `branchPhoneNo`,
`productCode`) VALUES ('BR221', 'Cork', '021475859', 'P5678');
INSERT INTO `mydb`.`Branch` (`branchID`, `branchAddress`, `branchPhoneNo`,
`productCode`) VALUES ('BR330', 'Waterford', '051846784', 'P1122');
INSERT INTO `mydb`.`Branch` (`branchID`, `branchAddress`, `branchPhoneNo`,
`productCode`) VALUES ('BR38', 'Dublin', '01784767', 'P3344');
INSERT INTO `mydb`.`Branch` (`branchID`, `branchAddress`, `branchPhoneNo`,
`productCode`) VALUES ('BR001', 'Longford', '041875589', 'P5566');
COMMIT;
这是我的第二张表:
CREATE TABLE IF NOT EXISTS `mydb`.`Employee` (
`empNo` CHAR(5) NOT NULL,
`name` VARCHAR(25) NULL,
`department` VARCHAR(10) NULL,
`Branch_branchID` CHAR(5) NOT NULL,
`Manager_managerID` CHAR(5) NOT NULL,
PRIMARY KEY (`empNo`),
INDEX `fk_Employee_Branch1_idx` (`Branch_branchID` ASC),
INDEX `fk_Employee_Manager1_idx` (`Manager_managerID` ASC),
CONSTRAINT `fk_Employee_Branch1`
FOREIGN KEY (`Branch_branchID`)
REFERENCES `mydb`.`Branch` (`branchID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Employee_Manager1`
FOREIGN KEY (`Manager_managerID`)
REFERENCES `mydb`.`Manager` (`managerID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
这里还有该表的插入内容:
START TRANSACTION;
USE `mydb`;
INSERT INTO `mydb`.`Employee` (`empNo`, `name`, `department`,
`Branch_branchID`, `Manager_managerID`) VALUES ('EM092', 'Dami Kerry',
'Garden', 'BR198', 'M3321');
INSERT INTO `mydb`.`Employee` (`empNo`, `name`, `department`,
`Branch_branchID`, `Manager_managerID`) VALUES ('EM782', 'Donna Kinsella',
'Living', 'BR221', 'M7789');
INSERT INTO `mydb`.`Employee` (`empNo`, `name`, `department`,
`Branch_branchID`, `Manager_managerID`) VALUES ('EM109', 'Georgina Hughes',
'Bathroom', 'BR330', 'M9034');
INSERT INTO `mydb`.`Employee` (`empNo`, `name`, `department`,
`Branch_branchID`, `Manager_managerID`) VALUES ('EM728', 'Joe Bloggs',
'Kitchen', 'BR938', 'M2945');
INSERT INTO `mydb`.`Employee` (`empNo`, `name`, `department`,
`Branch_branchID`, `Manager_managerID`) VALUES ('EM211', 'Michael Carroll',
'Bedroom', 'BR001', 'M0921');
COMMIT;
这是我不断收到的错误消息:
错误代码:1452。无法添加或更新子行:外键约束失败(mydb
.employee
,CONSTRAINT fk_Employee_Branch1
FOREIGN KEY (Branch_branchID
) 引用 branch
(branchID
) 删除时不执行任何操作 更新时不执行任何操作
正如您所见,我对 MySql 还很陌生。请您提供任何帮助/建议,我们将不胜感激!
提前致谢!
最佳答案
检查查询。
Cannot add or update a child row: a foreign key constraint fails
当您尝试删除对另一个表有依赖关系的记录,或者当您尝试添加对另一个表不存在依赖关系的记录时,会出现此错误。
我看到插入查询,发现表“Branch”中的 Pk“BR38”不等于您尝试在 Employee 中插入的 Fk“BR938”:
INSERT INTO `mydb`.`Branch` (`branchID`, `branchAddress`, `branchPhoneNo`,
`productCode`) VALUES ('BR38', 'Dublin', '01784767', 'P3344');
INSERT INTO `mydb`.`Employee` (`empNo`, `name`, `department`,
`Branch_branchID`, `Manager_managerID`) VALUES ('EM728', 'Joe Bloggs',
'Kitchen', 'BR938', 'M2945');
更正查询中的 FK,并让我知道它是否有效。
关于MySQL 错误代码(无法添加或更新子行..),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49075256/