问题描述
好的,这里是我用 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))
我将非常感谢您的帮助...谢谢
解决方法
-
在表 Pizza_Toppings 上,列 autogen_FK 是 auto_increment 并且您正在向它传递值。似乎您必须删除“auto_increament”,因为因为它是一个 fk,所以自动增量没有意义,它解决了您的问题。
-
您插入到 autogen_FK 的值也应该存在于 Order_Item (autogen) 中
您的插入语句是正确的,只有值无效
见数据库小提琴here