RENAME 语句

RENAME语句用于重命名现有表或索引。 仅包含加速器的表格无法重命名。

调用 RENAME

此语句可嵌入应用程序中或者以交互方式发出。 这是一个可执行语句,只有在DYNAMICRULES RUN行为生效时才能动态准备。 更多信息,请参阅授权ID和动态SQL

授权 RENAME

要重命名表,下面定义的权限集必须至少包含以下权限之一:

  • 对表的所有权
  • 包含表格的数据库的 DBADM、DBCTRL 或 DBMAINT 权限
  • SYSADM 或 SYSCTRL 权限
  • 系统 DBADM

如果数据库是隐式创建的,则数据库权限必须位于隐式数据库或 DSNDB04 上。

要重命名索引,下面定义的权限集必须至少包含以下权限之一:

  • 拥有定义索引的表格
  • 正在重命名的索引的所有权
  • 包含索引的数据库的 DBADM、DBCTRL 或 DBMAINT 权限
  • SYSADM 或 SYSCTRL 权限
  • 系统 DBADM

如果数据库是隐式创建的,则数据库权限必须位于隐式数据库或 DSNDB04 上。

权限设置:

如果语句嵌入到应用程序中,权限集就是计划或软件包所有者所拥有的权限。 如果语句是动态准备的,则权限集是进程的每个授权ID所拥有的权限集的并集。

语法 RENAME

阅读语法图跳过可视化语法图 RENAME TABLE源表名TO新表标识符INDEX源索引名称TO新索引标识符

描述 RENAME

源表名
标识要重命名的现有表格。 名称(包括隐式或显式限定符)必须标识当前服务器上存在的表。 该名称不得用于以下任何类型的表格:
  • 已声明的临时表
  • 目录表
  • 更改开始目录表更改结束
  • 活动资源限制规格表
  • 一个实体化的查询表
  • 克隆表
  • 系统时间段时间表
  • 系统周期时间表的历史表
  • 一个带有触发器的表格
  • 在行权限的定义中引用了表格
  • 在列掩码的定义中引用的表
  • 一个视图
  • 同义词
  • 启用存档功能的表格
  • 档案表
  • SQL表函数
如果您为源表指定了由三个部分组成的名称或别名,则源表必须在当前服务器上存在。 如果当前任何视图定义或具体化查询表定义引用源表,则会发生错误。
新表标识符
指定表的新名称,不带限定符。 源表名称限定符用于限定表的新名称。 限定名称不得标识当前服务器上存在的表、视图、别名或同义词,也不得标识 SYSIBM.SYSPENDINGOBJECTS 目录表中存在的表。

更多信息,请参阅表格名称指南

源索引名称
标识要重命名的现有索引。 名称(包括隐式或显式限定符)必须标识当前服务器上存在的索引。 更改开始该名称不得标识系统定义的目录索引、目录索引、已声明临时表的索引或活动资源限制规范表的索引。更改结束
新索引标识符
指定索引的新名称,不带限定符。 源索引名称的限定符用于限定索引的新名称。 限定名称不得标识当前服务器上存在的索引或 SYSIBM.SYSPENDINGOBJECTS 目录表中存在的索引。

更多信息,请参阅索引名称和指南

备注 RENAME

声明的影响
指定的表格或索引将重命名为新名称。 对于重命名的表,表中的所有权限和索引都将被保留。 对于重命名的索引,所有权限均予以保留。
包裹失效:
根据指定的条款和关键字以及其他因素,此语句可能会使所有依赖于目标对象(有时是其他相关对象)的包失效。 更多信息,请参阅 “导致套餐失效的变更 ”。
定义有未决更改时,限制
如果索引定义有未完成的更改,则不允许使用 RENAME INDEX 语句。

如果表的定义有未完成的更改,则不允许使用 RENAME TABLE 语句。

别名注意事项
如果为表名指定了别名,则该表必须在当前服务器上存在,并且由别名标识的表将被重命名。 别名不会更改,在重命名后仍指代旧表名。

不支持使用RENAME语句更改别名的名称。 要更改别名所指向的名称,必须先删除该别名,然后重新创建。

PLAN_TABLE注意事项
RENAME INDEX语句不会更新计划表的内容。 在计划表中,由EXPLAIN语句生成的行可以在访问路径选择中包含索引名称。 当索引被重命名时,现有计划表中引用旧索引名称的任何条目都不会更新。
授权转移、参照完整性约束和索引
与源表名相关的所有授权都将转移到新的(目标)表名。 授权目录表已适当更新。

涉及源表的参照完整性约束更新为引用新表。 目录表已适当更新。

源表定义的索引将转移到新表中。 索引目录表已适当更新。

对象标识
重命名的表和索引与原始表或索引保持相同的对象标识符。
重命名注册表
如果应用程序注册表(ART)或对象注册表(ORT)或ART或ORT的索引被指定为RENAME的源表,则RENAME完成后,该表将被删除。 一旦ART或ORT表被重命名,则不存在ART或ORT。
使用相关视图或SQL表函数重命名表
如果目标表在视图定义或SQL表函数中被引用,RENAME TABLE语句将返回错误,除非RENAMETABLE子系统参数设置为ALLOW_DEP_VIEW_SQLTUDF。
目录表更新
以下目录表中的条目已更新,以反映新的表格:
  • SYSAUXRELS
  • 系统检查
  • SYSCHECKS2
  • 系统检查依赖项
  • SYSCOLAUTH
  • SYSCOLDIST
  • syscoldist_hist
  • 系统管理员统计
  • SYSCOLSTATS
  • 系统词汇
  • 系统列历史
  • SYSCONSTDEP
  • 系统
  • 外国钥匙
  • 系统索引
  • 系统索引历史
  • SYSKEYCOLUSE
  • SYSPLANDEP
  • SYSPACKDEP
  • SYSRELS
  • 系统序列深
  • 同义词
  • 系统设置
  • SYSTABCONST
  • 系统
  • SYSTABLES_HIST
  • 系统统计
  • 系统统计历史

SYSSTMT和SYSPACKSTMT中的条目未更新。

以下目录表中的条目已更新,以反映新的索引:

  • 系统依赖项
  • 系统索引
  • 系统索引历史
  • 系统索引 部分
  • 系统索引部分历史
  • 系统索引空间统计
  • 系统索引统计
  • sysindexstats_hist
  • SYSKEYS
  • 系统键盘目标
  • syskeytargets_hist
  • 系统关键统计数据
  • SYSKEYTGTDIST
  • syskeytgtdist_hist
  • syskeytgtdiststats
  • 系统操作角色配置
  • SYSPACKDEP
  • SYSPLANDEP
  • SYSRELS
  • SYSTABCONST
  • SYSTABLEPART

例子 RENAME

示例1 :将EMP表名改为EMPLOYEE:
  RENAME TABLE EMP TO EMPLOYEE;
示例2 :更改名称 EMP_USA_HIS2002:
  RENAME TABLE EMP_USA_HIS2002 TO EMPLOYEE_UNITEDSTATES_HISTORY2002;
示例3 :将 EMPINDX1 的名称改为EMPLOYEE_INDEX:
  RENAME INDEX COMPANY.EMPINDX1 TO EMPLOYEE_INDEX;