重命名表

ALTER TABLE...RENAME TO 重命名一个或多个表。重命名的表保留其原始 OID。

可以通过提供两个逗号分隔的列表来重命名多个表。Vertica 根据两个列表中的顺序映射这些名称。只有第一个列表可以使用架构限定表名。例如:

=> ALTER TABLE S1.T1, S1.T2 RENAME TO U1, U2;

RENAME TO 参数将以原子方式应用:重命名所有表,或不重命名任何表。例如,如果要重命名的表数量与新名称数量不匹配,则所有表都不会被重命名。

使用重命名在架构内交换表

可以使用 ALTER TABLE...RENAME TO 在同一架构内交换表,而无需实际移动数据。不能跨架构交换表。

以下示例通过中间表 temp 交换表 T1T2 中的数据:

  1. t1temp

  2. t2t1

  3. tempt2

=> DROP TABLE IF EXISTS temp, t1, t2;
DROP TABLE
=> CREATE TABLE t1 (original_name varchar(24));
CREATE TABLE
=> CREATE TABLE t2 (original_name varchar(24));
CREATE TABLE
=> INSERT INTO t1 VALUES ('original name t1');
 OUTPUT
--------
      1
(1 row)

=> INSERT INTO t2 VALUES ('original name t2');
 OUTPUT
--------
      1
(1 row)

=> COMMIT;
COMMIT
=> ALTER TABLE t1, t2, temp RENAME TO temp, t1, t2;
ALTER TABLE
=> SELECT * FROM t1, t2;
  original_name   |  original_name
------------------+------------------
 original name t2 | original name t1
(1 row)