我在Oracle SQL Developer上遇到以下错误:
Error starting at line 1 in command:
ALTER TABLE AEROPUERTO ADD CONSTRAINT AEROPUERTO_FK FOREIGN KEY (CODIGO_CIUDAD) REFERENCES CIUDAD(CODIGO)
Error report:
SQL Error: ORA-02298: cannot validate (SYSTEM.AEROPUERTO_FK) - parent keys not found
02298. 00000 - "cannot validate (%s.%s) - parent keys not found"
*Cause: an alter table validating constraint failed because the table has
child records.
*Action: Obvious
为什么?
答案 0 :(得分:32)
AEROPUERTO
中有记录指向CIUDAD
中不存在的记录。
要找出AEROPUERTO
哪些记录有这类问题:
select * from AEROPUERTO where CODIGO_CIUDAD not in (select CODIGO from CIUDAD)
如果结果集不为空,则执行具有孤立记录。您需要添加缺少的CIUDAD
记录才能创建AEROPUERTO_FK
外键,或将所有错误的AEROPUERTO.CODIGO_CIUDAD
更新为null(如果是可空的字段,但您将失去这些机场记录的城市信息。)
答案 1 :(得分:2)
从要添加外键的列中删除主键约束