一尘不染

使用PostgreSQL在一条语句中重命名多列

sql

是否可以在单个语句中重命名多个列,类似于以下内容:

ALTER TABLE Users
    RENAME COLUMN userName TO user_name, 
    RENAME COLUMN realName TO real_name;

阅读 129

收藏
2021-03-17

共1个答案

一尘不染

不。

尽管可以组合其他操作,但使用则无法实现RENAME手册:

所有形式ALTER TABLE在单个表该行为,除了 RENAMESET SCHEMAATTACH PARTITION,和DETACH PARTITION可以组合成多种变更的列表要被施加到一起。

由于这RENAME是对系统目录的微小操作,因此运行多个语句不会有任何危害。在单个事务中执行此操作,以最大程度地减少锁定开销。

诸如此类的其他动作ALTER COLUMN ... SET TYPE可能很昂贵,因为它们可能必须重写整个表。对于大表,明智的做法是在单个语句中尽可能多地执行操作。

2021-03-17