首页 > 解决方案 > 在一次查询中更改 PostgreSQL 中的多个列名称和数据类型

问题描述

说明:我想更改列名及其数据类型。我有多个列,并希望在一个查询中更改所有列及其数据类型。

我试过的

  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

问题: 每次我在SQL StateRENAME子句中 遇到错误时:42601

谁能告诉我这个查询有什么问题?

标签: postgresqlalter-table

解决方案


虽然您可以在一个语句中更改多个列的数据类型,但一次ALTER TABLE只能重命名一个列。所以你将不得不使用几个ALTER TABLE语句。

我建议在单个事务中运行所有语句,这样您只需获取ACCESS EXCLUSIVE一次锁。


推荐阅读