2011-01-15 2 views
12

gefunden Ich erhalte die folgende Fehlermeldung in der Oracle SQL Developer:SQL-Fehler: ORA-02298: kann nicht bestätigen (SYSTEM.AEROPUERTO_FK) - Mutterschlüssel nicht

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 

Warum?

Antwort

29

Es gibt Datensätze in AEROPUERTO, die auf Datensätze zeigen, die in CIUDAD nicht vorhanden sind.

Um herauszufinden, welche Aufzeichnungen AEROPUERTO diese Art von Problem haben:

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

Wenn die Ergebnismenge nicht leer ist, Sie haben orphanaged Aufzeichnungen zu tun. Sie müssen die fehlenden CIUDAD Datensätze hinzufügen, um den Fremdschlüssel AEROPUERTO_FK zu erstellen, oder aktualisieren Sie alle fehlerhaften AEROPUERTO.CODIGO_CIUDAD auf Null (wenn dies ein Nullwertfeld ist, aber Sie verlieren die Stadtinformationen für diese Flughafen-Datensätze).

2

Entfernen Sie die Primärschlüsseleinschränkung aus der Spalte, in der Sie den Fremdschlüssel hinzufügen möchten