2012-03-28 4 views
1

Мне нужно изменить тип столбца в более чем 200 таблиц Я выполняю следующий рецепт:Oracle резервного копирования и восстановления ограничений, чтобы изменение типа столбца

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

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

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

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

  1. резервного копирования all_constraints и all_cons_columns записывается во временную таблицу и после изменения типа столбца, сохраняющего информацию об ограничениях.

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

¿Любые предложения? это было бы неплохо, THX !!

+0

Каковы старые и новые типы данных столбца? –

+0

старый тип - NUMBER (10) новый тип - VARCHAR2 (10) – Jimmy

+0

Возможно, вы захотите взглянуть на пакет DBMS_REDEFINITION (который, я считаю, является стандартной частью Oracle с 9i), который может помочь вам с все эти проблемы. –

ответ

0

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

в основном:

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