2013-07-24 17 views
-3

我在遇到以下插入查询时遇到问题。INSERT INTO ...在同一个表中选择将生成外键错误

INSERT INTO CM_LABEL_CALENDAR (
    label_id, 
    label_name, 
    order_seq, 
    meal_id, 
    hyperlink 
) 
SELECT 
    label_id, 
    label_name, 
    order_seq, 
    (meal_id + 315), 
    hyperlink 
FROM 
    CM_LABEL_CALENDAR 
WHERE 
    (meal_id BETWEEN '1466' AND '1521'); 

当我试图执行它,我收到以下错误:

Lookup Error - MySQL Database Error: Cannot add or update a child row: a foreign key constraint fails (TEST_PBMS . CM_LABEL_CALENDAR , CONSTRAINT CM_LABEL_CALENDAR_ibfk_1 FOREIGN KEY (meal_id) REFERENCES CM_MEAL_CALENDAR (meal_id))

我试图寻找一个答案,但没能找到。

+0

您应该了解外键。然后你明白这个问题,并且为将来的SQL使用提供更好的装备。 –

+2

错误表示您有外键问题。在这种情况下,您正在插入的其中一个meal_id在CM_MEAL_CALENDAR表中不存在,并且正在对它进行调整。 – Becuzz

+0

从同一张表中做'insert into .. select ..'通常也是一个非启动器。 – ethrbunny

回答

0

CM_LABEL_CALENDAR(meal_id)CM_MEAL_CALENDAR(meal_id)

之间,因为你试图插入在meal_id列不要在CM_MEAL_CALENDAR表中存在值您收到此错误外键约束。