2016-10-04 132 views
0

我有這些表:引用了一個外鍵是與父表的另一個關鍵主鍵

ORA-02270: no matching unique or primary key for this column-list 

create table t_table(t1 int, constraint tprim primary key(t1)); 

create table parent_table(t1 int, p1 int, p2 int, constraint pprim primary key(t1, p1)); 

create table child_table(t1 int, c1 int, p1 int, constraint cprim primary key(t1, c1), constraint fchild foreign key (p1) references parent_table(p1)); 

我創建第二個表時出現此錯誤

p1在parent_table中不是唯一的,所以我不能讓它唯一的解決問題。

在這種情況下如何說p1是引用parent_table(p1)的child_table中的外鍵?

在此先感謝。

回答

2

你不能。外鍵引用主鍵。也許你想要做的是將t1包含在child_table的外鍵中?否則,如果你真的需要像p1這樣的東西來成爲child_table中的FK,那麼你可能需要一張表,只有p1,具有唯一值?然後,parent_table和child_table中的p1都是FK,指向這個附加表。

+0

請,你是怎麼用'也許你想要做的是包括在國外關鍵child_table T1?'的意思是,你在同一個意思外鍵約束(使用p1)如果兩個鍵屬於不同的表時,情況如何? –

+0

@ youzking - 他們不屬於不同的表。 (t1,p1)在parent_table中的child_table引用(t1,p1)中 - 即使單獨的t1和p1都不是PK到parent_table。該對是主鍵,並且您可以從child_table引用。 – mathguy

+0

哦,當然,因爲t1是t_table中的第一個主鍵,我想它屬於t_table,我忘記它只是在child_table中的同名。 非常感謝。 –

0

這是不可能的,你必須引用一個主鍵

相關問題