43

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

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

1 回答 1

60

不。

虽然可以组合其他操作,但使用RENAME. 手册:

除、、和 之外的所有形式都ALTER TABLE作用于单个表, 并且可以组合成要一起应用的多个更改的列表。RENAMESET SCHEMAATTACH PARTITIONDETACH PARTITION

由于RENAME是对系统目录的微小操作,因此运行多个语句没有害处。在单个事务中执行此操作以最小化锁定开销并避免具有中间状态的竞争条件(然后对所有其他事务不可见)。

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

于 2014-04-24T16:41:55.177 回答