Sql 外键错误
我一直在修改我的所有表以定义FK,在尝试此表studentRsp时出现错误Sql 外键错误,sql,database,foreign-keys,foreign-key-relationship,alter,Sql,Database,Foreign Keys,Foreign Key Relationship,Alter,我一直在修改我的所有表以定义FK,在尝试此表studentRsp时出现错误 ALTER TABLE StudentRsp add CONSTRAINT fk_rspDate FOREIGN KEY (rspDate) REFERENCES LecturerRsp(rspDate); 我得到了错误 错误消息:中没有主键或候选键 与引用列列表匹配的引用表'讲师errsp' 在外键“fku rspDate”中。无法创建约束。看见 以前的错误 rspDate定义为讲师ERRSP中的主键。查找S
ALTER TABLE StudentRsp
add CONSTRAINT fk_rspDate
FOREIGN KEY (rspDate)
REFERENCES LecturerRsp(rspDate);
我得到了错误
错误消息:中没有主键或候选键
与引用列列表匹配的引用表'讲师errsp'
在外键“fku rspDate”中。无法创建约束。看见
以前的错误
rspDate定义为讲师ERRSP中的主键。查找StudentRsp中包含讲师ERRSP表中不存在字段的行。换句话说,该约束要求外键列中的所有字段与主键列中的字段匹配,并且StudentRsp中有一个在讲师RSP中不存在的键 例如:
LecturerRsp StudentRsp
pk_Col1 fk_Col1
1 1
2 2
3 4
4 5 ***
错误信息非常清楚-只要阅读它 *引用的表中没有主键或候选键 与外文中的引用列列表匹配的“讲师errsp” 键“fk_r更新”* 您希望引用表及其列
rspDate
,但此消息清楚地告诉您:rspDate
不是该表上的主键,也不是唯一索引/约束的一部分
这两个选项中的任何一个都要求您能够从外键引用该列
要解决此问题,请执行以下操作:
- 将
上的主键更改为列讲师errsp
rspDate
- 或者(如果可能)在该列上创建唯一索引
如果您不能执行这两项操作中的任何一项,那么您就不能从外键引用该列。您说过rspDate被定义为“主键”,这没有什么意义,因为每个表最多有一个主键。我想你的意思是说,它被定义为主键的一部分,这直接关系到问题的核心。我的表上有多个主键。如果主键由多列组成,任何外键都必须引用PK中的所有列,而不仅仅是其中一列