外键错误

时间:2011-09-21 04:35:01

标签: sql database foreign-keys foreign-key-relationship alter

我一直在改变我的所有表来定义FK,并在尝试这个表studentRsp时遇到错误。

ALTER TABLE StudentRsp
add CONSTRAINT fk_rspDate
  FOREIGN KEY (rspDate)
  REFERENCES LecturerRsp(rspDate);

收到错误

  

错误消息:中没有主键或候选键   引用的表'LecturerRsp'与引用列列表匹配   在外键'fk_rspDate'中。无法创建约束。看到   以前的错误。

rspDate被定义为LecturerRsp

中的主键

2 个答案:

答案 0 :(得分:0)

在StudentRsp中查找具有LecturerRsp表中不存在的字段的行。换句话说,约束要求foriegn键列中的所有字段与主键列中的字段匹配,并且StudentRsp中的一个键在LecturerRsp中不​​存在

示例:

LecturerRsp         StudentRsp
 pk_Col1             fk_Col1
  1                     1
  2                     2
  3                     4
  4                     5 ***

答案 1 :(得分:0)

错误信息非常清楚 - 只需阅读它......

  

*引用的表中没有主键或候选键   'LecturerRsp'匹配外部的引用列列表   键'fk_rspDate'。*

您想引用您的表LecturerRsp及其列rspDate - 但此消息清楚地告诉您:rspDate不是该表的主键,也不是该表的一部分唯一索引/约束。

这两者中的任何一个都是您能够从外键引用该列的要求。

解决此问题:

  • LecturerRsp上的主键更改为列rspDate
  • 或(如果可能)在该列上创建唯一索引

如果您无法执行这两项操作中的任何一项,则无法从外键引用该列。