我 运行 反复遇到找不到父密钥的问题
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
我能够插入客户信息,但是,然后我尝试插入预订信息,然后我收到错误: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