-4

我想添加一个引用该列本身的外键

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: no matching unique or primary key for this column-list

问题是什么?

4

2 回答 2

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);
于 2013-04-30T10:31:20.913 回答
-1

这意味着子表具有在父表中找不到的值。

您只需要删除这些孤立值或使用“novalidate”定义外键,从而跳过检查子表和父表之间的完整性。

更正:这解决了不同的 PK/FK 错误

ORA-02270 是因为您正在尝试创建外键并且该键没有引用具有唯一约束的主键或列。

于 2013-04-30T01:52:46.077 回答