-2

好的,这是我用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"), (3, "I12"), (3, "I13"),
       (4, "I12"), (4, "I13"), (5, "I14"),
       (6, "I14"), (7, "I10"), (9, "I10"),
       (10, "I10"), (10, "I11"), (10, "I12"), 
       (10, "I13"), (10, "I14"), (11, "I15");

错误信息:

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

我将非常感谢一些帮助...谢谢

4

1 回答 1

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

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

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

在此处查看 db<>fiddle

于 2021-03-23T19:06:11.903 回答