Ошибка SQL: ORA-02298: не удается проверить (SYSTEM.AEROPUERTO_FK) - родительские ключи не найдены
Я получаю следующую ошибку в 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
Почему?
Ответы
Ответ 1
В AEROPUERTO
есть записи, указывающие на записи, которые не существуют в CIUDAD
.
Чтобы узнать, какие записи AEROPUERTO
имеют такую проблему:
select * from AEROPUERTO where CODIGO_CIUDAD not in (select CODIGO from CIUDAD)
Если набор результатов не пуст, вы do имеете осиротевшие записи. Вам нужно будет добавить отсутствующие записи CIUDAD
для создания внешнего ключа AEROPUERTO_FK
, или обновить все ошибочные AEROPUERTO.CODIGO_CIUDAD
до нуля (если это поле с нулевым значением, но вы потеряет информацию о городе для этих записей в аэропорту).
Ответ 2
удалить ограничение первичного ключа из столбца, в который вы хотите добавить внешний ключ