Изменить имя столбца и тип данных в PostgreSQL в одном запросе - PullRequest
0 голосов
/ 05 ноября 2018

Описание: Я хочу изменить имя столбца и его тип данных. У меня есть несколько столбцов, и я хочу изменить все в одном запросе вместе с их типом данных.

Что я пробовал

  1. Изменение типа столбца с последующим переименованием.
ALTER TABLE customers  ALTER COLUMN phone TYPE numeric 
RENAME COLUMN phone TO contact_phone

и

ALTER TABLE customers  ALTER COLUMN phone TYPE numeric,
RENAME COLUMN phone TO contact_phone
  1. Изменение типа нескольких столбцов с последующим переименованием.
ALTER TABLE customers  
  ALTER COLUMN phone TYPE numeric, 
  ALTER COLUMN address TYPE text, 
  RENAME COLUMN phone TO contact_phone,
  RENAME COLUMN address TO contact_address
  1. Попытка изменить все типы данных столбца, а затем переименовать его
ALTER TABLE customers  
ALTER COLUMN phone TYPE numeric,ALTER COLUMN address TYPE text

и

ALTER TABLE customers 
 RENAME COLUMN phone TO contact_phone,RENAME COLUMN address TO contact_address

Проблема: Каждый раз, когда я получаю сообщение об ошибке в предложении RENAME, которое Состояние SQL: 42601

Может кто-нибудь сказать мне, что не так с этим запросом?

1 Ответ

0 голосов
/ 05 ноября 2018

Хотя вы можете изменить тип данных нескольких столбцов в одном операторе ALTER TABLE, переименование столбца можно выполнять только по одному за раз. Таким образом, вам придется использовать несколько ALTER TABLE операторов.

Я бы порекомендовал запускать все операторы в одной транзакции, таким образом вы должны получить блокировку ACCESS EXCLUSIVE только один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...