ORA-02270:此列列表没有匹配的唯一键或主键

时间:2013-04-30 08:59:00

标签: oracle

我有一张桌子,结构是

CREATE TABLE  "COURSE_ACCREDITED" 
("COURSE_ID" VARCHAR2(50) NOT NULL ENABLE, 
"ACCREDITATION_BODY_ID" VARCHAR2(50) NOT NULL ENABLE, 
"DATE_OBTAINED" VARCHAR2(50), 
 PRIMARY KEY ("COURSE_ID", "ACCREDITATION_BODY_ID", "DATE_OBTAINED") ENABLE, 
 CONSTRAINT "COURSE_ACCREDITED_CON" FOREIGN KEY ("COURSE_ID")
  REFERENCES  "COURSE" ("COURSE_ID") ENABLE)

当我添加约束

alter table "COURSE_ACCREDITED" add constraint
"COURSE_ACCREDITED_CON2" foreign key ("ACCREDITATION_BODY_ID") references "COURSE_ACCREDITED"    ("ACCREDITATION_BODY_ID")

出现ORA-02270:此列列表没有匹配的唯一键或主键

有什么问题?

1 个答案:

答案 0 :(得分:1)

您通过制作此主要广告来创建composite (or compound) key

("COURSE_ID", "ACCREDITATION_BODY_ID", "DATE_OBTAINED")

然后,您尝试使ACCREDITATION_BODY_ID成为外键,引用同一个表中的同一列。我不知道你想要实现什么,但无论如何,正确的方法。

在我看来, 原因是: ACCREDITATION_BODY_ID必须是主键才能被引用为外键,但这不是这里的情况。您的表的约束是复合键,您需要在外键语句中引用所有列。 (如果我错了,请修理我)

尝试引用外键语句中的所有复合键列。这可能会解决您的问题。

顺便说一句,在同一个表中引用主键作为外键对我没有任何意义(也许我错过了一些但仍然......)。我考虑改变设计。