1
ALTER TABLE Question ADD CONSTRAINT FK_SessionQuestion FOREIGN KEY
(SessionId) REFERENCES Session (SessionId);

上面的 SQL 给了我下面的错误:

#1452 - 无法添加或更新子行:外键约束失败 ( mobile_app. #sql-567_20be3, CONSTRAINT FK_SessionQuestion
FOREIGN KEY ( SessionId) REFERENCES Session( SessionId))

我想在Question表中包含一个外键以进行链接,SessionId但为什么它不允许我以及如何修复它?

Question桌子:

SessionId(PK) QuestionId(PK) QuestionContent
--------------------------------------------
1             1              What is 2+2
1             2              What is 3+3
2             1              What is 5+5
2             2              What is 4+7

Session桌子:

SessionId SessionName
---------------------
1         AAA
4

1 回答 1

2

问题表包括SessionId在会话表中找不到的 s(实际上,只有一个:)2FOREIGN KEY但是,该约束要求问题表中使用的每一个都根据其定义SessionId存在于会话表中。

插入所有缺失的会话,或删除所有引用不存在会话的问题。


SessionId要获取table 中缺少的所有s 的列表Session,可以使用LEFT JOIN

SELECT DISTINCT Question.SessionId
FROM Question
     LEFT JOIN Session
       ON Question.SessionId = Session.SessionId
WHERE Session.SessionId IS NULL;
于 2013-01-05T23:15:44.060 回答