02298. 00000 - "невозможно проверить (% s.% S) - родительские ключи не найдены" - PullRequest
0 голосов
/ 17 декабря 2018

Шаг 1:

У меня есть скрипт для отключения ограничений и триггера.это успешно выполнено.

Шаг 2:

У меня есть скрипт для усечения таблиц.это также успешно выполняется.

Шаг 3:

Но когда я пытаюсь включить ограничения и триггер, я получаю ошибку ниже.

Error report -
ORA-02298: cannot validate (EMPLOYEE.FK_829_EMP_STATUS) - parent keys not found
ORA-06512: at line 6
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 Ответ

0 голосов
/ 17 декабря 2018

Ограничение, которое вы включаете для таблицы EMPLOYEE, содержит записи, которых нет в родительской таблице.Посмотрите на ограничение, которое вы включаете, или удалите осиротевших потомков, добавьте записи обратно к родителю или используйте предложение NOVALIDATE, чтобы ограничение было включено даже с осиротевшими потомками (просто знайте, что у вас есть нарушения, которые вы"ok'd", который будет существовать в таблице).

Чтобы найти информацию об ограничении:

select * 
from dba_constraints 
where constraint_name = 'FK_829_EMP_STATUS'

Найдите столбец R_CONSTRAINT_NAME, затем:

select * 
from dba_constraints 
where constraint_name = '<r_constraint_name_value_from_above>'

Если вы хотите столбцы, вы можете запросить dba_cons_columns where constraint_name = 'xxxx'

В любом случае, это даст вам представление о таблицах и задействованных столбцах, так что вы, как я уже говорил ранее, можете исправить данные или включитьс новалидатом.

-Джим

...