2013-04-29 4 views
0

Мне нужно добавить два ограничения WORK_ADDRESS_ID и HOME_ADDRESS_ID в таблице таблицы STAFF ADDRESS_ID в таблице ADDRESS, но он выглядит. Операция TABLE не была выполнена по следующей причине: ORA-02298: не может подтвердить (LIP12YJ.STAFF_CON) - родительские ключи не найдены Что делать?Внешний ключ Oracle

+1

Является ли ADDRESS_ID первичным ключом в ADDRESS? – Liv

+0

Вот что-то подобное http://stackoverflow.com/questions/4702310/sql-error-ora-02298-cannot-validate-system-aeropuerto-fk-parent-keys-not-f – Noel

+2

Пожалуйста, включите DDL для таблиц, и команда ограничения, которая сгенерировала эту ошибку. –

ответ

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