0

我有一张桌子,结构是

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: 此列列表没有匹配的唯一键或主键

问题是什么?

4

1 回答 1

2

您正在通过将此作为主键来创建复合(或复合)键:

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

然后,您尝试创建ACCREDITATION_BODY_ID一个外键,引用同一张表上的同一列。我不知道您要达到什么目的,但无论如何,这不是正确的方法。

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

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

顺便说一句,在同一张表中将主键作为外键引用对我来说没有任何意义(也许我遗漏了一些东西,但仍然......)。我会考虑改变设计。

于 2013-04-30T10:30:14.823 回答