我 运行 反复遇到找不到父密钥的问题

I am running into a repeated problem with a parent key not found

我能够插入客户信息,但是,然后我尝试插入预订信息,然后我收到错误:ORA-02291:违反了完整性约束 - 找不到父键。 我想我的问题是我是否需要按照 table 需要先获取数据的顺序将数据放入其中?还是我还缺少其他东西? 我对 SQL 还是很陌生,这是我的第一个 SQl class,我们将不胜感激。 我也会有一些相同的数据,所以我也想知道如何在 table.

中有重复项
CREATE TABLE City
(City_Code VARCHAR2(3) CONSTRAINT pk_City Primary Key,
City_Name VARCHAR2(15),
State_ VARCHAR2(2)
);


CREATE TABLE Airport
(Airport_Code VARCHAR2(7) CONSTRAINT pk_Airport Primary Key,
City_Code VARCHAR2(3), CONSTRAINT fk_Airport_City_Code FOREIGN KEY(City_Code)
REFERENCES City, 
Airport_Name VARCHAR2(30)
);


CREATE TABLE Acraft_Data
(Type_ VARCHAR2(6),
Description_ VARCHAR2(20),
Capacity_ VARCHAR2(3),
Range_ VARCHAR2(4)
);

CREATE TABLE AirCraft_Type
(Serial_Num VARCHAR2(8) CONSTRAINT pk_AirCraft_Type Primary Key, 
Type_ VARCHAR2(6), CONSTRAINT fk_AirCraft_Type FOREIGN KEY(Type_)
REFERENCES ACraft_Data
);


CREATE TABLE FlightData
(Flt_Nbr VARCHAR2(3) CONSTRAINT pk_FlightData Primary Key,
Depart_Code VARCHAR2(30),
CONSTRAINT fk_Flight_Data_Depart_Code FOREIGN KEY(Depart_Code)
REFERENCES Airport,
Ariv_Code VARCHAR2(30),
CONSTRAINT fk_Flight_Data_Ariv_Code FOREIGN KEY(Ariv_Code)
REFERENCES Airport
);

CREATE TABLE Shed_Flight(
  Flt_Date DATE
              NOT NULL,
  Flt_Nbr  VARCHAR2(3)
              NOT NULL,    
  Seats_Resvd VARCHAR2(3),
  Seat_Ava   VARCHAR2(3),
  TOD         VARCHAR2(8),
  TOA         VARCHAR2(8),
  Serial_Num     VARCHAR2(10),
  CONSTRAINT PK_Shed_Flight PRIMARY KEY(Flt_Nbr, Flt_Date),
    CONSTRAINT fk_Shed_Flight_Flight_Nbr
    FOREIGN KEY (Flt_Nbr) REFERENCES FlightData (Flt_Nbr),
  CONSTRAINT fk_Shed_Flight
    FOREIGN KEY (Serial_Num) REFERENCES AirCraft_Type (Serial_Num)
);

CREATE TABLE CustomerAP
(Cust_Nbr VARCHAR2(4) CONSTRAINT pk_Customer Primary Key NOT NULL,
Cust_Name VARCHAR2(15) NOT NULL
);


CREATE TABLE Reservation(
Cust_Nbr    VARCHAR2(4)
              NOT NULL,
  Flt_Nbr  VARCHAR2(3)
              NOT NULL,
  Flt_Date DATE
              NOT NULL,
  CONSTRAINT fk_Reservation_Cust_Nbr
    FOREIGN KEY (Cust_Nbr) REFERENCES CustomerAP (Cust_Nbr),
  CONSTRAINT fk_Flt_Nbr_Flt_Date
    FOREIGN KEY (Flt_Nbr, Flt_Date) REFERENCES Shed_Flight ( Flt_Nbr, Flt_Date )

);

Reservation insert

INSERT INTO Reservation values(1001, 181, '07/13/2000');
INSERT INTO Reservation values(1004, 110, '07/12/2000');
INSERT INTO Reservation values(1004, 899, '07/14/2000');
INSERT INTO Reservation values(1055, 359, '07/13/2000');
INSERT INTO Reservation values(1058, 950, '07/13/2000');
INSERT INTO Reservation values(1058, 899, '07/14/2000');
INSERT INTO Reservation values(1077, 110, '07/12/2000');
INSERT INTO Reservation values(1080, 333, '07/13/2000');
INSERT INTO Reservation values(1100, 359, '07/132000');
INSERT INTO Reservation values(1155, 359, '07/13/2000');
INSERT INTO Reservation values(1158, 110, '07/12/2000');
INSERT INTO Reservation values(1158, 899, '07/13/2000');

Customer Insert

INSERT INTO CustomerAP values(1001, 'Ford');
INSERT INTO CustomerAP values(1004, 'Pfeiffer');
INSERT INTO CustomerAP values(1055, 'Harris');
INSERT INTO CustomerAP values(1058, 'Codd');
INSERT INTO CustomerAP values(1077, 'Nelson');  
INSERT INTO CustomerAP values(1080, 'Cassatt');
INSERT INTO CustomerAP values(1100, 'Streep');
INSERT INTO CustomerAP values(1155, 'Lechowick');

ACraft_Data

INSERT INTO ACraft_Data values( 'BO727','5-Seat, 2-engine jet', 110, 1800);
INSERT INTO ACraft_Data values( 'DC9', '6-Seat, prop w/jet', 168, 2800);
INSERT INTO ACraft_Data values( 'BO737', '6-Seat, 2-engine jet', 174, 2500);
INSERT INTO ACraft_Data values( 'BO747', '10-Seat, 4-engine jet', 300, 3500);
INSERT INTO ACraft_Data values( 'DC9', '6-Seat, prop w/jet', 168, 2800);
INSERT INTO ACraft_Data values( 'BO737', '6-Seat, 2-engine jet', 174, 2500);
INSERT INTO ACraft_Data values( 'BO727', '5-Seat, 2-engine jet', 110, 1800);
CONSTRAINT fk_Reservation_Cust_Nbr
    FOREIGN KEY (Cust_Nbr) REFERENCES CustomerAP (Cust_Nbr)

当您设置引用另一个 table 列的 FK 时,您将无法插入不在引用列中的内容。

INSERT INTO Reservation values(1158, 110, '07/12/2000');
INSERT INTO Reservation values(1158, 899, '07/13/2000');

那两行 Cust_Nbr : 1158 数据违反了这条规则。要么在 ref table 中添加这些数据,要么不添加这些数据,你应该 fine.But 确保你检查是否有任何其他类似的错误。

检查 MSDN 以获得更好的信息。

按以下顺序INSERT INTO表,部分表依赖于其他表的主键。

City, 
Acraft_Data, 
Airport, 
AirCraft_Type, 
FlightData ,
Shed_Flight, 
CustomerAP, 
Reservation