Запрос PostgreSQL для переименования и изменения типа столбца с помощью одного запроса
В PostgreSQL, если мне нужно переименовать и изменить тип данных столбца, я должен запустить два отдельных запроса для этого.
Чтобы переименовать:
ALTER TABLE <tablename> RENAME <oldcolumn> TO <newcolumn>
и изменить тип столбца:
ALTER TABLE <tablename> ALTER COLUMN <columnname> <columntype>.
Но есть ли способ сделать обе эти работы с одним запросом, например, следующим запросом MySQL:
ALTER TABLE <tableName> CHANGE COLUMN <oldcolumnname> <newcolumnname> <newtype>
Ответы
Ответ 1
В PostgreSQL ALTER TABLE
может выполняться ряд операций. Итак:
ALTER TABLE <tablename> RENAME <oldcolumn> TO <newcolumn>;
ALTER TABLE <tablename> ALTER COLUMN <columnname> TYPE <newtype>;
совпадает с
ALTER TABLE <tablename>
ALTER COLUMN <columnname> TYPE <newtype>
RENAME <oldcolumn> TO <newcolumn>;
Однако... почему? IIRC переименование не приведет к сканированию в полноэкранном режиме, поэтому нет никакой пользы от того, что вы просто делаете два заявления отдельно, в течение одной транзакции. Какую проблему вы на самом деле пытаетесь решить?
Ответ 2
PostgreSQL: изменить имя столбца таблицы и тип данных:
ALTER TABLE <TableName>
ALTER [ COLUMN ] column [ SET DATA ] TYPE data_type [ COLLATE collation ] [ USING expression ]
RENAME [ COLUMN ] column TO new_column;
См. ALTER TABLE
.