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

Oracle ORA-02270:此列列表没有匹配的唯一键或主键,oracle,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") EN

我有一张桌子,桌子的结构是

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

问题出在哪里?

您正在通过以下方式创建:

("COURSE_ID", "ACCREDITATION_BODY_ID", "DATE_OBTAINED")
然后,尝试将
ACCREDITATION\u BODY\u ID
设为外键,引用同一表中的同一列。我不知道你想实现什么,但无论如何,这不是正确的方法

在我看来,原因是:
认证机构ID
必须是主键才能作为外键引用,但这里的情况并非如此。表的约束是一个复合键,需要引用外键语句中的所有列。(如果我错了,请纠正我)

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


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

错误说明了一切。您没有任何索引,其中
认证\u BODY\u ID
是第一列。通过向表中的同一列添加外键引用,您试图实现的目标可能重复?你真的想添加一个唯一的索引吗?请不要问同样的问题两次。如果你没有得到答案。