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
- 源表名
- 标识要重命名的现有表格。 名称(包括隐式或显式限定符)必须标识当前服务器上存在的表。 该名称不得用于以下任何类型的表格:
- 已声明的临时表
- 目录表
目录表
- 活动资源限制规格表
- 一个实体化的查询表
- 克隆表
- 系统时间段时间表
- 系统周期时间表的历史表
- 一个带有触发器的表格
- 在行权限的定义中引用了表格
- 在列掩码的定义中引用的表
- 一个视图
- 同义词
- 启用存档功能的表格
- 档案表
- 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;