微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

获得“无法添加或更新子行:外键约束失败”

如何解决获得“无法添加或更新子行:外键约束失败”

好的,这里是我用 INSERT 语句引用的表:

CREATE TABLE IF NOT EXISTS Order_Item
(
    autogen      INT auto_increment,order_num_FK VARCHAR(20),item_num_FK  CHAR(20),CONSTRAINT order_item_PK PRIMARY KEY (autogen),CONSTRAINT order_item_FK1 FOREIGN KEY (order_num_FK)
    REFERENCES Pizza_Order(order_num),CONSTRAINT order_item_FK2 FOREIGN KEY (item_num_FK)
    REFERENCES Pizza(item_num)
);

CREATE TABLE IF NOT EXISTS Pizza_Toppings 
(
    autogen_FK  INT auto_increment,item_num_FK CHAR(20),CONSTRAINT Pizza_Toppings_FK1 FOREIGN KEY (autogen_FK)
    REFERENCES Order_Item(autogen),CONSTRAINT Pizza_Toppings_FK2 FOREIGN KEY (item_num_FK)
    REFERENCES Toppings(item_num)
);

这是 INSERT 语句:

INSERT INTO Pizza_Toppings(autogen_FK,item_num_FK)
VALUES (1,"I10"),(1,"I12"),(2,"I14"),(3,"I11"),"I13"),(4,(5,(6,(7,(9,(10,(11,"I15");

错误信息:

无法添加或更新子行:foriegnkey 约束失败 ("pizzadelivery_db.pizza_toppings_FK1" FOREIGN KEY ("autogen_FK) 引用 "order_item(autogen))

我将非常感谢您的帮助...谢谢

解决方法

  1. 在表 Pizza_Toppings 上,列 autogen_FK 是 auto_increment 并且您正在向它传递值。似乎您必须删除“auto_increament”,因为因为它是一个 fk,所以自动增量没有意义,它解决了您的问题。

  2. 您插入到 autogen_FK 的值也应该存在于 Order_Item (autogen) 中

您的插入语句是正确的,只有值无效

见数据库小提琴here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。