ALTER TABLE RENAME COLUMN

Содержание раздела
  1. Как работает запрос
    1. Регистрация запроса
    2. Обработка запроса
    3. Успешный результат
    4. Неуспешный результат
  2. Синтаксис
    1. Ключевое слово IF EXISTS
    2. Ключевое слово LOGICAL_ONLY
  3. Варианты ответа
  4. Ограничения
    1. Ограничения выполнения
    2. Ограничения имен
    3. Ограничения партиционирования
    4. Другие ограничения
  5. Примеры
    1. Переименование столбца без ключевых слов
    2. Переименование столбца с ключевым словом IF EXISTS
    3. Переименование столбца с ключевым словом LOGICAL_ONLY

Поддерживается в версиях: 7.6 / 7.5 / 7.4 / 7.3 / 7.2 / 7.1 / 7.0 / 6.12 / 6.11 / 6.10 / 6.9 / 6.8 / 6.7 / 6.6 / 6.5 / 6.4 / 6.3 / 6.2 / 6.1 / 6.0.

Запрос переименовывает столбец таблицы:

Запрос поддерживается для СУБД ADB, ADP и ADQM.

Как работает запрос

Регистрация запроса

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

Обработка запроса

Запрос попадает в очередь операций и обрабатывается в порядке его поступления в очередь.

Успешный результат

При успешном выполнении запроса система обновляет структуру таблицы в логической схеме данных, а структуру связанных физических таблиц — в датасорсах хранилища данных.

Если запросы к логическому или материализованному представлению стали недоступными после изменения таблицы, на которой оно построено, пересоздайте сбойное представление.

Неуспешный результат

При ошибке исполнения корректного запроса система блокирует все последующие DDL-запросы в логической БД. О снятии такой блокировки см. в разделе Снятие блокировки DDL-запросов.

Синтаксис

ALTER TABLE [db_name.]table_name
RENAME COLUMN [IF EXISTS] column_name TO new_column_name
[LOGICAL_ONLY]

Параметры:

db_name

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

table_name

Имя изменяемой таблицы.

column_name

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

new_column_name

Новое имя столбца таблицы.

Ключевое слово IF EXISTS

Включает проверку наличия сущности с таким именем до попытки переименования столбца. Если ключевое слово указано в запросе, успешный ответ возвращается при отсутствии или успешном переименовании столбца, иначе — только при успешном переименовании столбца.

Ключевое слово LOGICAL_ONLY

Позволяет переименовать столбец только на логическом уровне (в логической схеме данных), не обновляя физическую схему в хранилище данных.

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

Варианты ответа

В ответе возвращается:

  • пустой объект ResultSet при успешном выполнении запроса;
  • исключение при неуспешном выполнении запроса.

Ограничения

Ограничения выполнения

Ограничения имен

Ограничения партиционирования

  • При переименовании столбца в партиционированной таблице необходимо переименовать соответствующий столбец во всех ее партициях.
  • При переименовании столбца в партиции необходимо переименовать соответствующий столбец в связанной партиционированной таблице и других ее партициях.

Другие ограничения

  • Недоступно переименование столбца, входящего в первичный ключ или ключ шардирования.
  • После изменения таблицы запросы к связанным логическим и материализованным представлениям могут стать недоступными. Если это произошло, пересоздайте сбойные представления.
  • Информационная схема обновляется асинхронно, поэтому столбец может не сразу обновиться в информационной схеме.

Примеры

Переименование столбца без ключевых слов

Переименование столбца в логической таблице указанной логической БД:

ALTER TABLE marketing.clients
RENAME COLUMN description TO additional

Переименование столбца в прокси-таблице указанной логической БД:

ALTER TABLE marketing.payments_proxy
RENAME COLUMN manager_id TO manager

Переименование столбца в снапшот-таблице логической БД, выбранной по умолчанию:

USE marketing;

ALTER TABLE sales_snapshot
RENAME COLUMN manager_id TO manager;

Переименование столбца с ключевым словом IF EXISTS

ALTER TABLE marketing.clients
RENAME COLUMN IF EXISTS description TO additional

Переименование столбца с ключевым словом LOGICAL_ONLY

ALTER TABLE marketing_new.sales
RENAME COLUMN client_id TO client_info
LOGICAL_ONLY