sql - 使用多个重命名 RENAME 表达式 postgresql 时出现语法错误

标签 sql postgresql alter-table

我正在尝试编写一次重命名多个表列的查询。根据文档,语法是:

ALTER TABLE table_name
RENAME old_col_a AS new_col_a
, RENAME old_col_b AS new_col_b...;

但是,在这样做的过程中,我在第一个 RENAME 子句之后的逗号处收到语法错误:

ERROR:  syntax error at or near ","
LINE 3: , RENAME 
    ^
SQL state: 42601
Character: 1

查询适用于多个 DROP/ALTER/ADD 列和单个重命名。我终其一生都无法弄清楚为什么会发生此错误。

最佳答案

您需要使用多个 ALTER 语句:

ALTER TABLE table_name
RENAME COLUMN old_col_a TO new_col_a;

ALTER TABLE table_name
RENAME COLUMN old_col_b TO new_col_b;

ALTER TABLE

All the forms of ALTER TABLE that act on a single table, except RENAME, SET SCHEMA, ATTACH PARTITION, and DETACH PARTITION can be combined into a list of multiple alterations to be applied together. For example, it is possible to add several columns and/or alter the type of several columns in a single command. This is particularly useful with large tables, since only one pass over the table need be made.

关于sql - 使用多个重命名 RENAME 表达式 postgresql 时出现语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53769166/

相关文章:

sql - Postgresql: append 两个具有不同列的表

mysql - SQL获取每个组的第二(第n)条记录(postgresql或mysql)

ruby-on-rails - 如何将表列转换为另一种数据类型

MySQL:如何修改列以添加属性 "On Delete Cascade"?

sql - Windows 服务还是 SQL 作业?

mysql - 程序应该返回值吗?

sql - 是否可以在sql中的另一个用户定义的表类型中使用用户定义的表类型

SQL 查询计算行与前一行的总和

sql - 基于分层模式中外键的滚动 id

MySQL 使用过程 analyze() 创建表