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
是第一列。通过向表中的同一列添加外键引用,您试图实现的目标可能重复?你真的想添加一个唯一的索引吗?请不要问同样的问题两次。如果你没有得到答案。