【问题标题】:MYSQL ERROR CONCERNING UPDATING CHILD/PARENT TABLES关于更新子/父表的 MYSQL 错误
【发布时间】:2020-09-11 13:29:07
【问题描述】:

所以我在下面有这些表格:

CREATE TABLE branch (
 branch_id INT PRIMARY KEY,
 branch_name VARCHAR(40),
 mgr_id INT,
 mgr_start_date DATE,
 FOREIGN KEY(mgr_id) REFERENCES employee(emp_id) ON DELETE SET NULL
);

CREATE TABLE branch_supplier (
 branch_id INT,
 supplier_name VARCHAR(40),
 supply_type VARCHAR(40),
 PRIMARY KEY(branch_id, supplier_name),
 FOREIGN KEY(branch_id) REFERENCES branch(branch_id) ON DELETE CASCADE
);

我正在尝试将信息插入到 branch_supplier 表中。

INSERT INTO branch_supplier VALUES(2, 'Uni-ball', 'Writing Utensils');

但不断遇到以下错误:

ER_NO_REFERENCED_ROW_2:无法添加或更新子行:外部 键约束失败 (girrafe.branch_supplier, CONSTRAINT branch_supplier_ibfk_1 外键 (branch_id) 引用 branch (branch_id) 删除级联)

我刚刚开始学习 MYSQL。不知道如何解决这个问题。

【问题讨论】:

    标签: mysql sql database foreign-keys sql-insert


    【解决方案1】:

    错误信息很清楚。您为子表branch_supplier(此处为2)中的列branch_supplier 赋予的值必须存在于父表branch 的列branch_id 中。

    要么将该值更改为存在于父表中的值,要么先插入父行,然后插入子行。

    【讨论】:

    • 所以这里是父表分支?
    • @user13485609:是的,完全正确。
    • 请原谅我是新手,但修复此错误的代码是什么?
    • @user13485609:正如我所说:insertbranch 中的一行与branch_id 2,或者更改插入到branch_supplier 的查询,因此它使用branch_id branch 中已经存在。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    • 2020-06-28
    • 2018-05-10
    • 2016-01-20
    • 2018-02-20
    • 1970-01-01
    相关资源
    最近更新 更多