ограничение ссылочной целостности автоматически отключается в Oracle - PullRequest
0 голосов
/ 15 июня 2009

когда я собираюсь вставить данные в дочернюю таблицу, для которой я добавил ограничение (внешний ключ)

ограничение автоматически отключается.

Можете ли вы помочь мне ..........

Ответы [ 3 ]

1 голос
/ 15 июня 2009

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

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

1 голос
/ 15 июня 2009

Ограничение не может «автоматически» отключиться - проверьте его текущее состояние, введя этот SQL (как владелец таблицы / ограничения):

выберите статус, подтвержденный в user_constraints, где constraint_name = ' theNameOfYourConstraint '

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

[Дополнительно]

Я вижу из более позднего комментария, что отключение происходит из-за прямой загрузки пути в SQL * Loader. Если вы хотите предотвратить это, я думаю, что ваш единственный вариант - использовать обычную загрузку и обрабатывать исключения. Связывание файла с определением внешней таблицы позволит вам использовать более процедурный подход, поскольку вы можете обрабатывать файл, как если бы это была таблица Oracle.

Из документов Oracle:

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

0 голосов
/ 15 июня 2009

Вы должны предоставить нам дополнительную информацию / код. Опишите свое ограничение. Как вы вставляете записи?

  • вставить заявление
  • вызов процедуры
  • sql loader
  • и т.д.

Воспроизведите вашу проблему:

select *
from user_constraints 
where constraint_name = 'theNameOfYourConstraint';

do your insert here

select *
from user_constraints 
where constraint_name = 'theNameOfYourConstraint';

и покажите нам вывод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...