sql - 未找到 Oracle 父 key

标签 sql database oracle

我正在尝试向预订表添加约束条件,预订可以是航类或住宿,也可以是两者兼而有之。

Reservation

  • 前4条回程、去程、住宿预订记录
  • 接下来的 4 条记录只预订了航类并且将 acc_id 设置为 NULL
  • 以下 2 条记录只预订了住宿,因此在航类、起飞航类和座位都设置为空。

这是我对这张表的约束

ALTER TABLE HOLIDAY_RESERVATION ADD CONSTRAINT HOLIDAY_PK PRIMARY KEY (RESV_ID);
ALTER TABLE HOLIDAY_RESERVATION ADD CONSTRAINT CUSTOMER_FK FOREIGN KEY (BOOKING_CUS_ID) REFERENCES CUSTOMER (CUS_ID);
ALTER TABLE HOLIDAY_RESERVATION ADD CONSTRAINT STAFF_FK3 FOREIGN KEY (EMP_ID) REFERENCES STAFF (EMP_ID);
ALTER TABLE HOLIDAY_RESERVATION ADD CONSTRAINT FLIGHT_FK FOREIGN KEY (IN_FLIGHT_ID) REFERENCES FLIGHT (FLI_ID);
ALTER TABLE HOLIDAY_RESERVATION ADD CONSTRAINT FLIGHT_FK1 FOREIGN KEY (OUT_FLIGHT_ID) REFERENCES FLIGHT (FLI_ID);
ALTER TABLE HOLIDAY_RESERVATION ADD CONSTRAINT ACC_FK FOREIGN KEY (ACC_ID) REFERENCES ACCOMMODATION (ACC_ID);

唯一会产生错误的约束是;

ALTER TABLE HOLIDAY_RESERVATION ADD CONSTRAINT FLIGHT_FK1 FOREIGN KEY (OUT_FLIGHT_ID) REFERENCES FLIGHT (FLI_ID);

我明白了

ERROR at line 1:
ORA-02298: cannot validate (U1146815.FLIGHT_FK1) - parent keys not found

问题是什么?我知道这与孤儿有关,但我设置为空所以我不明白,请指教

最佳答案

该错误表明 FLIGHT 表没有至少一个介于 11 和 18 之间的 FLI_ID 值的条目。您需要插入一行在 FLIGHT 表中查找缺少的任何航类,或更新您的表以具有不同的 OUT_FLIGHT_ID

关于sql - 未找到 Oracle 父 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9773631/

相关文章:

sql - 基于分手的日期拆分

java - 从表中选择“所有字段”中的“where”字段

oracle - 使用先前连接的更新查询的 sql 语法

MySQL如何解决一对一关系

sql - 您如何知道在 SQL Server 2008 中创建约束的方法是什么?

mysql - SQL select query - 从不同字段中选择

mysql - 使用什么才能在 Mysql 中拥有完整的合并表

mysql - 两个表的sql求和

mysql - 需要部分匹配的 SQL 查询

sql - 在Oracle中不使用in语句删除两条记录