ВЫБЕРИТЕ В ту же таблицу - PullRequest
0 голосов
/ 19 января 2010

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

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

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

ТИА.

Ответы [ 2 ]

4 голосов
/ 19 января 2010

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

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

Какая версия 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...