SQL错误:ORA-02298:无法验证(SYSTEM.AEROPUERTO_FK) - 未找到父键

时间:2011-01-15 21:41:32

标签: database oracle oracle10g

我在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

为什么?

2 个答案:

答案 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)

从要添加外键的列中删除主键约束