Мне нужно добавить два ограничения WORK_ADDRESS_ID и HOME_ADDRESS_ID в таблице таблицы STAFF ADDRESS_ID в таблице ADDRESS, но он выглядит. Операция TABLE не была выполнена по следующей причине: ORA-02298: не может подтвердить (LIP12YJ.STAFF_CON) - родительские ключи не найдены Что делать?Внешний ключ Oracle
0
A
ответ
0
Ошибка указывает на то, что в таблице имеются данные, которые ссылаются на ADDRESS_ID
, который не находится в таблице ADDRESS
. К сожалению, из названия ограничения неясно, является ли проблема с данными в столбце WORK_ADDRESS_ID
или с данными в столбце HOME_ADDRESS_ID
. Но это достаточно легко проверить и
SELECT *
FROM staff s
WHERE NOT EXISTS(SELECT 1
FROM address a
WHERE a.address_id = s.work_address_id)
покажет все строки в таблице STAFF
, которые имеют WORK_ADDRESS_ID
, который не существует в ADDRESS
таблице. Точно так же,
SELECT *
FROM staff s
WHERE NOT EXISTS(SELECT 1
FROM address a
WHERE a.address_id = s.home_address_id)
покажет все строки в таблице STAFF
, которые имеют HOME_ADDRESS_ID
, который не существует в ADDRESS
таблице.
+0
Да, большое вам спасибо! – user2332706
Является ли ADDRESS_ID первичным ключом в ADDRESS? – Liv
Вот что-то подобное http://stackoverflow.com/questions/4702310/sql-error-ora-02298-cannot-validate-system-aeropuerto-fk-parent-keys-not-f – Noel
Пожалуйста, включите DDL для таблиц, и команда ограничения, которая сгенерировала эту ошибку. –