我有一张桌子,结构是
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:此列列表没有匹配的唯一键或主键
有什么问题?
答案 0 :(得分:1)
您通过制作此主要广告来创建composite (or compound) key:
("COURSE_ID", "ACCREDITATION_BODY_ID", "DATE_OBTAINED")
然后,您尝试使ACCREDITATION_BODY_ID
成为外键,引用同一个表中的同一列。我不知道你想要实现什么,但无论如何,不正确的方法。
在我看来, 原因是: ACCREDITATION_BODY_ID
必须是主键才能被引用为外键,但这不是这里的情况。您的表的约束是复合键,您需要在外键语句中引用所有列。 (如果我错了,请修理我)
尝试引用外键语句中的所有复合键列。这可能会解决您的问题。
顺便说一句,在同一个表中引用主键作为外键对我没有任何意义(也许我错过了一些但仍然......)。我考虑改变设计。