2014-02-13 54 views
0

我用ISQLPLUS創建表時,我引用多個外鍵,他們給了我不匹配的唯一或主鍵錯誤ORA-02270ORA-02270:此列列表

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

這裏是我的代碼:

create table People 
(name varchar(50), 
ssn varchar(50) not null, 
G# varchar(50), 
primary key (ssn), 
unique(ssn, G#)) 

create table Professor 
(
name varchar(50), 
ssn varchar(50) not null, 
G# varchar(50), 
teach_record varchar(50), 
primary key (ssn), 
unique (ssn, G#), 
foreign key (name, ssn, G#) references People(name, ssn, G#) ON DELETE CASCADE 
) 

它說的前行錯誤「)」,在教授的腳本,它引用的人(姓名,SSN,G#) 我不能推測是什麼問題。

+1

您以在其上創建一個外鍵需要對人(姓名,SSN,G#)主鍵。 –

+0

弗羅林是對的;但爲什麼你首先在'professor'表中複製'name'和'G#'列呢?由於'ssn'是'people'表中的主鍵,因此可以將表加入到表中以獲取這些值。否則,如果說人名更改(通過婚姻或其他),那麼你必須管理更新兩個表中的值同時進行,這也意味着更新主鍵 - 通常不需要的。 –

+0

這是一個ISA關係。我想說prof表繼承People的屬性。 – Rozen

回答

2

試試這個:

create table People 
(name varchar(50), 
ssn varchar(50) not null, 
G# varchar(50), 
primary key (ssn), 
unique(name, ssn, G#)) 

create table Professor 
(
name varchar(50), 
ssn varchar(50) not null, 
G# varchar(50), 
teach_record varchar(50), 
primary key (ssn), 
unique (ssn, G#), 
foreign key (name, ssn, G#) references People(name, ssn, G#) ON DELETE CASCADE 
) 
+0

如果要幫助您,請將答案標爲OK! – cavalsilva