2016-05-30 90 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) 
); 
相关问题