2016-05-30 67 views
0
create table reservation (
    reserve_id number PRIMARY KEY, 
    date_in  TIMESTAMP, 
    date_out TIMESTAMP, 
    made_by number(4), 
    constraint LocationID_fk foreign key (locId) references location(locId), 
    constraint fk_guest_id foreign key (guest_id) references guest(guest_id) 
); 

是露苗頭的父表我想創建一個外鍵的表,但我不斷收到ORA-00904錯誤。我究竟做錯了什麼?

create table guest(
    guest_id NUMBER(3) PRIMARY KEY, 
    fname varchar(10), 
    lname varchar(5), 
    email varchar(10) 
); 

Create table location (
    locId NUMBER(4) PRIMARY KEY, 
    loc_name varchar(10), 
    manager_name  varchar(15) 
); 

-------錯誤,保持上來

錯誤報告 -

SQL Error: ORA-00904: "LOCID": invalid identifier 
00904. 00000 - "%s: invalid identifier" 
*Cause:  
*Action: 
+0

請詳細說明您的情況 – user3085931

+1

您usie鍵(LOCID),但你沒有在預約表此列.. – scaisEdge

回答

3

我想你誤會了什麼約束定義如下:

constraint LocationID_fk foreign key (locId) references location(locId), 
constraint fk_guest_id foreign key (guest_id) references guest(guest_id) 

也許你的印象是,通過定義外鍵約束locIdguest_id,它也自動定義reservation表上的2列?事實並非如此。除了外鍵約束定義之外,您必須明確定義2列。喜歡的東西:

create table reservation (
    reserve_id number PRIMARY KEY, 
    date_in  TIMESTAMP, 
    date_out  TIMESTAMP, 
    made_by  number(4), 
    locId   number(4), -- explicitly defined 
    guest_id  number(3) -- explicitly defined 
    constraint LocationID_fk foreign key (locId) references location(locId), 
    constraint fk_guest_id foreign key (guest_id) references guest(guest_id) 
); 
相關問題