2015-07-20 35 views
0
創建表
SQL> create table reservation(
      reservationid varchar2(6) primary key, 
      userid varchar2(6) references userprofile(userid), 
      vehicleid varchar2(6) references vehicle(vehicleid), 
      routeid varchar2(8) references route(routeid), 
      bookingdate date not null, 
      journeydate date not null, 
      driverid varchar2(6) references driver(driverid), 
      bookingstatus varchar2(20) not null, 
      totalfare number(10) not null, 
      boardingpoint varchar2(30) not null, 
      droppoint varchar2(30) not null, 
      vname varchar2(20) not null 
); 

我得到一個錯誤: * ERROR位於第1行:SQL:在cmd中

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

+0

HTTP ://sqlfiddle.com/#!4 – potashin

+0

你在那裏有一個無效的外鍵引用。在不知道數據庫模式的其他部分的情況下,很難精確地找到準確的位置。你應該嘗試的是在DDL中刪除一個FK引用並運行它;繼續消除FK參考,直到成功運行。這應該是罪魁禍首。 –

+1

@SamM由於'REFERENCES'關鍵字沒有實際的外鍵定義,所以它比這更糟糕。 –

回答

1

錯誤是相當清楚的。您的一個外鍵引用指向另一個表中不是主鍵或唯一鍵的列。

因此,檢查以下,表/列,並確保他們的主鍵,或者說他們至少有上定義一個唯一約束:

  • userprofile.userid
  • vehicle.vehicleid
  • route.routeid
  • driver.driverid

因此,舉例來說,下面的簡單示例失敗,正是你所得到的錯誤:

create table groups (
    group_id number(10) not null -- not a pk or unique key. 
) 
/

create table users (
    user_id number(10) not null primary key, 
    group_id number(10) references groups(group_id) -- this causes an error. 
) 
/

演示:SQLFiddle。

嗯,無法獲得適當的SQLFiddle鏈接到有錯誤的模式。我得到的錯誤是像您一樣的:

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


使得groups.group_id一個主鍵,修正錯誤:

create table groups (
    group_id number(10) not null primary key 
) 
/

create table users (
    user_id number(10) not null primary key, 
    group_id number(10) references groups(group_id) 
) 
/

演示:SQLFiddle


使得groups.group_id的唯一密鑰還修復了錯誤:

create table groups (
    group_id number(10) not null unique 
) 
/

create table users (
    user_id number(10) not null primary key, 
    group_id number(10) references groups(group_id) 
) 
/

演示:SQLFiddle

編輯:關於外鍵約束語法

外鍵約束由OP使用的語法是有效的,並記錄在這裏: