.rename table 命令

更改现有表的名称。

.rename tables 命令将数据库中多个表的名称作为单个事务进行更改。

权限

你必须至少具有表管理员权限才能运行此命令。

语法

.renametableOldNametoNewName

.renametablesNewName=OldName [ifexists] [, ...]

详细了解语法约定

参数

客户 类型​​ 必需 说明
OldName string 某个现有表的名称。 如果 OldName 不是某个现有表的名称,则会引发错误,并且整个命令将失败,除非指定了 ifexists
NewName string 以前名为 OldName 的表的新名称。
ifexists string 如果指定此项,则该命令将处理表不存在的情况。 它不会失败,而是会继续操作,且不尝试重命名不存在的表。

备注

此命令仅对范围内的数据库表起作用。 无法使用群集或数据库名称限定表名。

此命令不会创建新表,也不会删除现有表。 此命令描述的转换必须确保数据库中的表数量保持不变。

只要遵守上述规则,此命令就支持交换表名或更复杂的排列。 例如,将数据引入多个临时表,然后在单个事务中将它们与现有表交换。

示例

假设数据库中包含以下表:ABCA_TEMP。 以下命令将交换 AA_TEMP(现在 A_TEMPA 表的名称相互对调)、将 B 重命名为 NEWB 并保持 C 不变。

.rename tables A=A_TEMP, NEWB=B, A_TEMP=A

命令的顺序如下:

  1. 创建新的临时表
  2. 将现有表或不存在的表替换为新表
// Drop the temporary table if it exists
.drop table TempTable ifexists

// Create a new table
.set TempTable <| ...

// Swap the two tables
.rename tables TempTable=Table ifexists, Table=TempTable

// Drop the temporary table (which used to be Table) if it exists
.drop table TempTable ifexists

重命名具体化视图的源表

如果要重命名的表为具体化视图的源表,则可在 .rename 命令中指定以下属性:

.renametableOldNametoNewNamewith (updateMaterializedViews=true)

该表会被重命名,并且所有引用 OldName 的具体化视图都会被更新为指向 NewName(以事务性方式)。

注意

仅当在具体化视图查询中直接引用源表时,此命令才起作用。 如果源表是从视图查询所调用的存储函数引用的,则此命令会失败,因为此命令无法更新存储的函数。