現象
外部キーを作成しようとすると、ORA-02270 が発生する。
SQL> alter session set current_schema = "scott"; SQL> alter table foo add constraint foo_bar_fk1 foreign key (bar) references bar (id) on delete set null enable; error at line 1: ora-02270: no matching unique or primary key for this column-list
解決策
- 外部キーの値が親表の値と一致しているか確認し、一致していなければ一致させる。
SQL> select a.bar, b.id, count(1) from foo a left outer join bar b on a.bar = b.id group by a.bar, b.id order by a.bar, b.id;
確認したところ、全て一致していた。
- 親表にプライマリー・キーもしくはユニーク・キーが存在するか確認し、なければ作成する。
SQL> alter table bar add constraint bar_pk primary key (id) using index bar_pk;
今回はユニーク・インデックスは存在したがプライマリ―・キ―制約が存在しなかったので、作成した。