2014-09-04 13 views
0

У меня есть две таблицы, как Samp1 (родительская таблица) и Samp2 (Детский стол)Изменение типа данных столбца

Родитель Таблица: Samp1

column   Datatype  Constraint 
---------------------------------------- 
Id Number(6)  Primary  Key 

Детский стол: Samp2

column    Datatype  Constraint 
---------------------------------------------- 
Id     Number(6)  Foriegn Key 

Тогда как изменить тип данных столбца Number to Varchar2 (10) как родительскую, так и дочернюю таблицу за раз, могу ли я?

ответ

1

Вы не можете сделать это за один шаг. Если предположить, что столы данных, вы, вероятно, нужно сделать что-то вроде

  • Добавить новый столбец (например id_varchar) для вашей родительской таблицы
  • занесения данных в этой новой колонке из данных в существующей колонке
  • Добавим, что новый столбец в дочерней таблице
  • занесения данных в этой новой колонке из данных в существующей колонке
  • Создание нового внешнего ключа для нового столбца
  • Dr цит существующий ограничение внешнего ключа
  • Отбросьте существующий ограничение первичного ключа
  • Отбросьте существующий id столбцы из обеих таблиц
  • Переименовать id_varchar столбец id в каждой таблице
  • Создание нового первичного ключа на родителе Таблица

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

+0

Спасибо за ваш ответ Г-н Джастин Кейв – MastanSky