在一个查询中更改 PostgreSQL 中的多列名称和数据类型

Alter Multiple column Name and Data Type in PostgreSQL in one query

描述:我想更改列名及其数据类型。我有多个列,想在一个查询中更改所有列及其数据类型。

我试过的

  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

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

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

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