SQL 错误 : ORA-02298: cannot validate (SYSTEM. AEROPUERTO_FK) - 找不到父键

标签 sql 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

为什么?

最佳答案

AEROPUERTO 中的记录指向CIUDAD 中不存在的记录。

要找出 AEROPUERTO 的哪些记录有此类问题:

select * from AEROPUERTO where CODIGO_CIUDAD not in (select CODIGO from CIUDAD)

如果结果集不为空,则您确实有孤立的记录。您需要添加缺少的 CIUDAD 记录才能创建 AEROPUERTO_FK 外键,更新所有错误的 AEROPUERTO。 CODIGO_CIUDAD 为空(如果这是一个可为空的字段,但您将丢失这些机场记录的城市信息)。

关于SQL 错误 : ORA-02298: cannot validate (SYSTEM. AEROPUERTO_FK) - 找不到父键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4702310/

相关文章:

java - oracle 11g xe 的本地主机是什么?

java - 数据库中的自动序列增量器

sql - 需要帮助来理解 SQL 查询 (oracle10g)

sql - 连接存储有字符串和数字的 varchar 类型的列

sql - 从不规则日期中按小时查找百分比时间

java - 为什么当我使用 DriverManager.getConnection 时,我的 SQL 连接会卡住,但没有任何错误?

sql - 寻求在较大表上调优 Oracle SQL 的技巧和教程

mysql - 基于 SQL MIN() 选择额外字段

sql - SQL 中的表别名歧义是标准禁止的还是被实现阻止的?

sql - 在存储过程中使用 View 而不是表?