首页 > 解决方案 > 使用多个重命名重命名表达式 postgresql 时出现语法错误

问题描述

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

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 列和单个 RENAME。我一生都无法弄清楚为什么会发生此错误。

标签: sqlpostgresqlalter-table

解决方案


您需要使用多个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;

更改表

除了 RENAME、SET SCHEMA、ATTACH PARTITION 和 DETACH PARTITION 之外,所有作用于单个表的 ALTER TABLE 形式都可以组合成一个列表,其中包含要一起应用的多个更改。例如,可以在单个命令中添加几列和/或更改几列的类型。这对于大桌子特别有用,因为只需要在桌子上进行一次传递。


推荐阅读