2010-01-19 2 views
0

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

1.) Мне нужно создать новый столбец с существующей структурой столбцов. 2.) Перенесите данные в новый столбец. 3.) Сохраните старый столбец.

У меня нет новой структуры столбца, и я должен взять ее из старой колонки.

TIA.

+0

Вы уверены, что имеете в виду сохранить старые столбцы и не удалить? –

+0

Не должно быть «Мне нужно создать новую ** таблицу ** с существующей структурой столбцов»? –

+0

Мне нужно сохранить старую колонку. В противном случае это просто. – user155573

ответ

4

Вам не нужно указывать одну и ту же таблицу. Выполните следующие шаги:

  1. Создать новый столбец как обнуляемый.
  2. Используйте инструкцию для обновления, чтобы заполнить данные в новый столбец на основе значений из старого столбца.
  3. При необходимости добавьте ограничение, не имеющее значения null.
  4. Обновите все запросы и код, чтобы использовать значения в новом столбце вместо старого столбца.
  5. Удалить старую колонку.
+0

Это определенно то, как я пойду. –

+0

4.) Как добавить новую структуру столбца и ограничения к новой? – user155573

+0

@blog: Как я предлагаю это сделать, вам не нужна новая таблица, поэтому вам не нужно ничего, кроме описанных выше шагов. –

1

Какая версия Oracle? Вы можете переименовать колонку, так как 9i R2:

ALTER TABLE your_table 
RENAME COLUMN old_name to new_name; 

Если вы установите на воссоздавая таблицу, так что вы можете использовать SELECT INTO, то вы хотите использовать следующие шаги:

  1. падение сдерживающие связанные с таблицей (ами)
  2. падение индексов, связанных с таблицей (ами)
  3. Лок исходная таблица:

    LOCK TABLE old_table IN EXCLUSIVE MODE; 
    
  4. Переименовать таблицу:

    RENAME old_table TO old_table_orig 
    
  5. Создать новую таблицу с правильными/обновленных столбцами

  6. Запустите SELECT INTO скрипт (ы), чтобы заполнить новую таблицу, обработка изменения типа данных, если есть любой
  7. Добавить индексы
  8. добавить ограничения
  9. уронить old_table_orig
+1

Я не могу переименовать столбец. – user155573

+1

@blog: Почему вы не можете переименовать столбец? –

Смежные вопросы