我想添加一个引用该列的外键
FOREIGN KEY ACCREDITATION_BODY_ID NOT NULL REFERENCES
ACCREDITATION_BODY_LOOK_UP(ACCREDITATION_BODY_ID),
并且表中的SQL是:
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)
当我添加这个外键时,会出现ORA-02270:此列列表没有匹配的唯一键或主键
有什么问题?
答案 0 :(得分:0)
ACCREDITATION_BODY_LOOK_UP是否有主键(或唯一键)?
select constraint_name, constraint_type
from user_constraints
where table_name = 'ACCREDITATION_BODY_LOOK_UP'
and constraint_type in ('P', 'U');
如果是,它的列是什么?将外键添加到从属表时,需要以相同的顺序引用所有这些列。
select column_name, position
from user_cons_columns
where table_name = 'ACCREDITATION_BODY_LOOK_UP'
and constraint_name = '<< constraint from previous query >>';
如果不是,则需要在该表上创建主键,然后才能在外键中引用它。
alter table ACCREDITATION_BODY_LOOK_UP
add constraint ACCR_BODY_LKUP_PK primary key (ACCREDITATION_BODY_ID);
答案 1 :(得分:-1)
这意味着子表具有在父表中找不到的值。
您只需删除这些孤立值或使用“novalidate”定义外键,该外键会跳过检查子表和父表之间的完整性。
更正:此地址存在不同的PK / FK错误
ORA-02270是因为您正在尝试创建外键,并且该键未引用具有唯一约束的主键或列。