【发布时间】:2014-11-18 03:07:44
【问题描述】:
我正在尝试向预订表添加约束,预订可以是航班或住宿,或两者兼而有之。
- 前 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
似乎是什么问题?我知道这与孤儿有关,但我设置为空所以我不明白,请指教
【问题讨论】:
-
根据您的屏幕截图,OUT_FLIGHT_ID 包含一些数据(不仅是空值),您确定所有这些 OUT_FLIGHT_ID 都是 FLIGHT 表中的 FLI_ID 吗?
-
感谢指点,我忘了插入另一半记录:)