簡體   English   中英

如何在sql中修復“ORA-02270:此列列表中沒有匹配的唯一或主鍵”錯誤

[英]how to fix “ORA-02270: no matching unique or primary key for this column-list ” error in sql

問題發生在FLIGHT表中,

create table LOCATION (  
  airportCode   VARCHAR2(10) not null,  
  country       VARCHAR2(15) not null,  
  address       VARCHAR2(50) not null,  
  PRIMARY KEY(airportCode));

create table ROUTE (  
  routeID           VARCHAR2(10) not null,  
  airportCode       VARCHAR2(10) not null,  
  description       VARCHAR2(100) not null,  
  PRIMARY KEY(routeID, airportCode),
  FOREIGN KEY(airportCode) REFERENCES LOCATION(airportCode));

create table NEACC (  
  memberID          VARCHAR2(20),  
  flightGoldpoints  NUMBER,  
  PRIMARY KEY(memberID));

create table STAFF (  
  staffID           VARCHAR2(20) not null,  
  memberID          VARCHAR2(20) not null,
  name              VARCHAR2(20) not null,
  address           VARCHAR2(50) not null,
  email             VARCHAR2(30) not null,  
  phone             NUMBER not null,
  passportNum       NUMBER not null,
  PRIMARY KEY(staffID),
  FOREIGN KEY(memberID) REFERENCES NEACC(memberID));

create table FLIGHT (   
  flightID          VARCHAR2(20) not null,   
  routeID           VARCHAR2(20) not null,   
  staffID           VARCHAR2(20) not null, 
  captainOrFirstOfficer VARCHAR2(15) CHECK (captainOrFirstOfficer IN ('captain', 'first officer')) not null,
  estDepartDateTime VARCHAR2(20) not null,   
  actDepartDateTime VARCHAR2(20) not null,   
  actArriveDateTime VARCHAR2(20) not null, 
  avgSpeed          NUMBER not null, 
  avgHeight         NUMBER not null, 
  estDuration       NUMBER not null, 
  estFuel           NUMBER not null, 
  PRIMARY KEY(flightID, routeID), 
  FOREIGN KEY(routeID) REFERENCES ROUTE(routeID), 
  FOREIGN KEY(staffID) REFERENCES STAFF(staffID));

我得到的錯誤是“ORA-02270:此列列表沒有匹配的唯一或主鍵”。 外鍵和主鍵在航班表中正確引用,但我不明白為什么會出現此錯誤。

Route表中的主鍵是:

PRIMARY KEY(routeID, airportCode),

適當的外鍵引用需要按順序引用。 那將是:

FOREIGN KEY(routeID, airportCode) REFERENCES ROUTE(routeID, airportCode), 

但是, FLIGHT沒有airportCode ,所以這不起作用。

我不確定你想采取什么方向 - 從主鍵中刪除airportCode或將其添加到Flight表中。 但這是你的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM