【发布时间】:2014-06-10 01:54:31
【问题描述】:
是否可以在单个语句中重命名多个列,类似于:
ALTER TABLE Users
RENAME COLUMN userName TO user_name,
RENAME COLUMN realName TO real_name;
【问题讨论】:
标签: sql postgresql ddl alter-table table-rename
是否可以在单个语句中重命名多个列,类似于:
ALTER TABLE Users
RENAME COLUMN userName TO user_name,
RENAME COLUMN realName TO real_name;
【问题讨论】:
标签: sql postgresql ddl alter-table table-rename
没有。
虽然可以组合其他操作,但 RENAME 无法实现。 The manual:
作用于单个表的
ALTER TABLE的所有形式,除了RENAME、SET SCHEMA、ATTACH PARTITION、DETACH PARTITION可以 组合成要一起应用的多个更改的列表。
由于RENAME 是对系统目录的微小操作,因此运行多个语句并没有什么坏处。在单个事务中执行以最小化锁定开销并避免具有中间状态的竞争条件(然后对所有其他事务不可见)。
像ALTER COLUMN ... SET TYPE 这样的其他操作可能很昂贵,因为它们可能必须重写整个表。对于大表,明智的做法是尽可能在单个语句中完成。
【讨论】: