Oracle Backup и восстановление ограничений, позволяющих изменить тип столбца - PullRequest
1 голос
/ 28 марта 2012

Мне нужно изменить тип столбца в более чем 200 таблицах. Я следую следующему рецепту:

  1. Отключить все внешние ограничения, если на столбец ссылается какой-либо FK
  2. Сохранение столбцов в varray и удаление первичного ключа, если столбец является частью PK
  3. Создать новый временной столбец в таблице того же типа
  4. Обновить новый временной столбец с исходными значениями
  5. Удалить значения из исходного столбца
  6. Изменить тип столбца исходного столбца
  7. Обновить исходный столбец значениями временного столбца
  8. Восстановить первичный ключ, если применяется
  9. Включить FK, если применяется

У меня возникли проблемы со следующими случаями

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

------- Мои идеи --------

  1. Резервное копирование записей all_constraints и all_cons_columns во временной таблице и после изменения типа столбца с восстановлением информации об ограничениях.

  2. Придерживайтесь той же идеи хранения подписи FK и PK, чтобы восстановить их после изменения типа столбца

¿Есть предложения? было бы ценить это, спасибо !!

1 Ответ

0 голосов
/ 04 апреля 2012

Вы можете попробовать старый CTAS, а затем переименовать метод:

в основном:

  1. создать новую таблицу как select c1, c1, c3 ... из старой таблицы (включая тип данныхпреобразование здесь;
  2. установить любые индексы, ограничения ...
  3. удалить старую таблицу (может потребоваться сначала отключить надстройки)
  4. переименовать новую таблицу в старую таблицу
...