在一个查询中更改 PostgreSQL 中的多列名称和数据类型
Alter Multiple column Name and Data Type in PostgreSQL in one query
描述:我想更改列名及其数据类型。我有多个列,想在一个查询中更改所有列及其数据类型。
我试过的
- 更改列类型然后重命名。
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
- 更改多列类型然后重命名。
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
- 尝试更改所有列数据类型然后重命名
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
锁。
描述:我想更改列名及其数据类型。我有多个列,想在一个查询中更改所有列及其数据类型。
我试过的
- 更改列类型然后重命名。
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
- 更改多列类型然后重命名。
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
- 尝试更改所有列数据类型然后重命名
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
锁。