重命名表
ALTER TABLE...RENAME TO
重命名一个或多个表。重命名的表保留其原始 OID。
可以通过提供两个逗号分隔的列表来重命名多个表。Vertica 根据两个列表中的顺序映射这些名称。只有第一个列表可以使用架构限定表名。例如:
=> ALTER TABLE S1.T1, S1.T2 RENAME TO U1, U2;
RENAME TO
参数将以原子方式应用:重命名所有表,或不重命名任何表。例如,如果要重命名的表数量与新名称数量不匹配,则所有表都不会被重命名。
当心
如果某个表被视图引用,则重命名该表会导致视图出现故障,除非您使用先前的名称创建另一个表来替换重命名的表。使用重命名在架构内交换表
可以使用 ALTER TABLE...RENAME TO
在同一架构内交换表,而无需实际移动数据。不能跨架构交换表。
以下示例通过中间表 temp
交换表 T1
和 T2
中的数据:
-
t1
到temp
-
t2
到t1
-
temp
到t2
=> 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)