Sql

Postgresql rename column: Renaming One or More Columns of a Table

Как переименовать столбцы таблицы в PostgreSQL

PostgreSQL предоставляет предложение RENAME COLUMN , которое используется совместно с командой ALTER TABLE для переименования столбца. Команда RENAME COLUMN позволяет переименовать один или несколько столбцов. PostgreSQL не предоставляет параметр «IF EXISTS» для команды «RENAME COLUMN» .

В этой статье объясняются перечисленные ниже варианты использования Команда RENAME COLUMN в PostgreSQL .

● Как использовать команду RENAME COLUMN для переименования столбцов в PostgreSQL?

● Как переименовать столбец, имеющий несколько зависимых объектов?

● Как использовать команду RENAME COLUMN для переименования нескольких столбцов в PostgreSQL?

Итак, приступим.

Как использовать команду RENAME COLUMN для переименования столбцов в PostgreSQL?

Команда «RENAME COLUMN» также может использоваться как «ПЕРЕИМЕНОВАТЬ» . Команда RENAME COLUMN выполняется с помощью команды ALTER TABLE , как показано в следующем синтаксисе:

 ALTER TABLE tab_name
ПЕРЕИМЕНОВАТЬ КОЛОННУ old_col_name В new_col_name; 

Давайте разберемся, как работает приведенный выше фрагмент:

ALTER TABLE — это предложение, используемое для изменения или изменения таблицы.

tab_name — таблица, которую нужно изменить/модифицировать.

ПЕРЕИМЕНОВАТЬ КОЛОННУ — это команда, которая переименовывает столбец.

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

new_col_name представляет новое/измененное имя столбца.

Пример №1: Как переименовать столбец таблицы в Postgres? Шаг 1: Выберите базу данных0004 и установить соединение с базой данных с помощью команды «\c» :

 \c пример; 

Вывод показывает, что мы успешно подключились к базе данных «example» .

Шаг 2: Выберите таблицу

Запустите команду «\dt» , чтобы проверить доступные таблицы в подключенной базе данных:

 \dt; 

Выберите стол по вашему выбору из доступных столов.

Шаг 3: Опишите таблицу

Давайте запустим команду «\d»

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

 \d staff_details; 

Шаг 4: Переименуйте столбец

Предположим, нам нужно переименовать столбец «staff_location» в «staff_address» . Выполните команду «RENAME COLUMN» , чтобы переименовать выбранный столбец:

 ALTER TABLE staff_details 
 RENAME COLUMN staff_location TO staff_address; 

Шаг 5: Проверка имени столбца

Давайте выполним команду «\d», а затем имя таблицы, чтобы проверить, было ли изменено имя столбца:

 \d staff_details; 

Вывод подтвердил, что столбец «staff_location» был переименован в «staff_address» .

Как переименовать столбец, который имеет несколько зависимых объектов?

Переименование столбца с зависимыми объектами, такими как внешние ключи, представления, хранимые процедуры и т. д., также приведет к изменениям зависимых объектов.

Пример: как переименовать внешний ключ в PostgreSQL?

Рассмотрим приведенные ниже шаги для переименования столбца, от которого зависят некоторые другие объекты:

Шаг 1. Получение таблиц

Во-первых, мы получим «article_details» и «author_details4»

4 таблицы с помощью команды

«\d» :

Вышеприведенный фрагмент кода показывает, что «article_id» является внешним ключом в

«author_details» таблица. Таким образом, переименование столбца «article_id» в таблице «article_details» автоматически переименует столбец «article_id» в таблице «author_details» .

Шаг 2: Переименуйте столбец

Давайте запустим приведенную ниже команду, чтобы переименовать столбец «article_id» в «id» :

 ALTER TABLE article_details
ПЕРЕИМЕНОВАТЬ СТОЛБЦ article_id В id; 

Шаг 3. Проверьте имя столбца

Введите команду «\d» , за которой следует имя таблицы (например, «article_detials» ), чтобы увидеть изменения, внесенные в выбранную таблицу:

 \d article_detials; 

Приведенный выше фрагмент поясняет, что

«article_id» был переименован в «id» в выбранной таблице, а также в зависимых объектах/таблицах.

Как использовать команду RENAME COLUMN для переименования нескольких столбцов?

Следуйте синтаксису, разделенному точкой с запятой, чтобы переименовать несколько столбцов в PostgreSQL :

 ИЗМЕНИТЬ ТАБЛИЦУ tab1_name
ПЕРЕИМЕНОВАТЬ КОЛОННУ old_col_name В new_col_name;
 
 ИЗМЕНИТЬ ТАБЛИЦУ tab2_name
ПЕРЕИМЕНОВАТЬ КОЛОННУ old_col_name В new_col_name; 

Пример: как переименовать несколько столбцов в Postgres?

В этом примере, во-первых, мы переименуем столбец «id» таблицы «article_details» в «article_id» .

Далее мы изменим имя столбца «author_id» на «a_id» 9.0004 :

 ИЗМЕНИТЬ ТАБЛИЦУ article_details
ПЕРЕИМЕНОВАТЬ ИДЕНТИФИКАТОР КОЛОННЫ В article_id;
 
 ИЗМЕНИТЬ ТАБЛИЦУ author_details
ПЕРЕИМЕНОВАТЬ СТОЛБЦУ author_id В a_id; 

Давайте выполним этот запрос из инструмента запросов pgAdmin:

Вывод подтвердил, что выбранные таблицы были успешно изменены.

Заключение

PostgreSQL предоставляет предложение RENAME COLUMN , которое используется совместно с командой ALTER TABLE для переименования столбца. PostgreSQL не предоставляет параметр «IF EXISTS» для команды «RENAME COLUMN» . Таким образом, Postgres выдаст ошибку, если целевой столбец не существует в выбранной таблице. В этой статье рассмотрено несколько примеров, объясняющих работу пункта

«RENAME COLUMN» .

Как практически переименовать таблицы и столбцы в PostgreSQL в рабочей системе?

Часто бывает, что оригинальное имя чему-то дается не самое лучшее. Возможно, требования немного изменились, а может быть, со временем появилось лучшее понимание представляемой концепции. Иногда при разработке функции используется одно имя, но тестирование с реальными пользователями показывает, что требуется лучшее имя, и было бы неплохо, чтобы имена для вещей в БД соответствовали именам, используемым в пользовательском интерфейсе.

PostgreSQL позволяет переименовывать таблицы и столбцы с помощью alter table , но часто это невозможно в рабочей среде без значительных простоев. Если существующие клиенты используют старое имя, вы не можете просто вытащить его из-под них.

Я надеялся, что есть какой-то способ «добавить имя» к таблице или столбцу, чтобы old_name

и new_name оба работали, а потом удалить старое имя. Тогда миграция имен может работать следующим образом:

  • добавить новое_имя
  • изменить все клиенты для использования new_name вместо old_name
  • после обновления всех клиентов удалить old_name

Есть ли способ сделать это? Если нет, существует ли рекомендуемая процедура переименования столбца с минимальным временем простоя? Как насчет стола?

  • PostgreSQL

6

Несколько рабочих рецептов переименования таблиц и/или столбцов в производственной системе. Однако я тестировал их только на небольшой тестовой базе данных, а не на большой производственной системе. Однако переименование и создание представления должны быть очень быстрыми.

Переименование таблицы

  1. Переименование таблицы и временное добавление обновляемого представления со старым именем:

     начало;
        изменить таблицу old_table переименовать в new_table;
        создать представление old_table как select * from new_table;
    совершить;
     
  2. Перенесите клиенты для использования нового имени таблицы.

  3. После переноса всех клиентов удалите представление:

     открыть вид old_table;
     

Переименование столбцов без переименования таблицы

Переименование столбца без переименования таблицы немного сложнее, потому что у нас не может быть тени для таблицы (очевидно).

  1. Переименуйте столбцы, временно переименуйте таблицу и добавьте обновляемый представление, которое добавляет старое имя для столбца с правильным именем таблицы:

     начало;
        изменить таблицу my_table переименовать столбец old_name в new_name;
        изменить таблицу my_table переименовать в my_table_tmp;
        создать представление my_table как
            выберите *, новое_имя как старое_имя из my_table_tmp;
    совершить;
     
  2. Перенесите клиенты для использования нового имени столбца.

  3. После переноса всех клиентов отбросить представление, переименовать таблицу обратно:

     начало;
        отбросить представление my_table;
        изменить таблицу my_table_tmp переименовать в my_table;
    совершить;
     

Одновременное переименование таблицы и некоторых ее столбцов

  1. Переименование таблицы и столбцов и временное добавление обновляемого представления со старым именем и старыми столбцами:

     начало;
        изменить таблицу old_table переименовать в new_table;
        изменить таблицу new_table переименовать столбец из old_name в new_name;
        создать представление old_table как
            выберите *, old_name как новое_имя из новой_таблицы;
    совершить;
     

    Вместо выберите *, old_name как new_name , может быть лучше иметь только исходный набор столбцов, поэтому клиенты должны перейти на новую таблицу имя, чтобы получить новые имена столбцов:

     создать представление old_table как
        выберите неизменяемое_имя, старое_имя как новое_имя из новой_таблицы;
     
  2. Перенастройте клиенты для использования новых имен таблиц и столбцов.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *