Базы данных Oracle - статьи

         

Обходные пути


В ваших специальных случаях вы вполне можете находить приемлемые решения или даже пути обхода этих проблем. Например, один (несомненно, жизнеспособный) способ обойти проблему отключения ограничений внешнего ключа опирается на тот факт, что можно удалять секцию в главной таблице, если в ней никогда не было никаких данных. Если "поиграться" с этой идеей, можно найти следующую стратегию удаления пары секций при наличии ограничений всего лишь в режиме novalidate:

  • создаем пустую таблицу parent_clone с индексами
  • удаляем секцию подчиненной таблицы
  • обмениваем секцию главной таблицы с parent_clone, указав конструкции without validation и including indexes
  • удаляем секцию в главной таблице, что теперь допустимо, поскольку она никогда не содержала данных
  • удаляем таблицу parent_clone, в которой и находятся все данные
  • Я не уверен, однако, что это абсолютно безопасно. Что, если отсуствие сообщения об ошибке Oracle ORA-02266 в этом особом случае- ошибка? Что вы будете делать, если корпорация Oracle включит исправление этой ошибки в следующий набор исправлений?



    Содержание раздела