RENAME TABLE 语句

使用 RENAME TABLE 语句来更改表的名称。RENAME TABLE 语句为对 SQL 的 ANSI/ISO 标准的扩展。

语法

元素 描述 限制 语法
new_table old_table 的新名称 在该数据库的序列、表、视图和同义词的名称之中必须为唯一的 标识符
old_table new_table 替代的名称 必须为在当前的数据库中注册的表的名称(非同义词) 标识符
owner 该表的当前所有者 必须为该表的所有者。 所有者名称

用法

要重命名表,您必须为该表的所有者,或有对该表的 ALTER 权限,或有对该数据库的 DBA 权限。

如果 old_table 为同义词,而不是表的名称,则发生错误。

old_table 可为 CREATE EXTERNAL TABLE 语句定义的对象。

重命名了的表保留在当前的数据库中。您不可使用 RENAME TABLE 语句来将表从当前的数据库移到另一数据库,也不能重命名位于另一数据库中的表。

您不可通过重命名表来更改表 owner。如果您试图为该表的新名称指定 owner. 标识符,则发生错误。

当更改表所有者时,您必须同时指定旧的所有者和新的所有者。

在符合 ANSI 的数据库中,如果您不是 old_table 的所有者,则必须指定 owner.old_table 作为该表的旧的名称。

如果通过当前数据库中的视图引用 old_table,则在 sysviews 系统目录表中更新该视图定义来反映新的表名称。要获取更多关于 sysviews 系统目录表的信息,请参阅 GBase 8s SQL 参考指南

如果 old_table 为触发器表,则数据库服务器采取这些活动:
  • 替代在触发器定义中的表的名称,但不在任何触发器活动之中表名称出现的任何地方替代它
  • 如果新的表名称与该触发器定义的 REFERENCING 子句中的相关名称相同,则返回错误

当执行该触发器时,如果它遇到不存在的表的表名称,则数据库服务器返回错误。

使用 RENAME TABLE 来重新组织表

当您需要重新组织现有的表的模式时,RENAME TABLE 语句可为 ALTER TABLE 语句的有用的替代手段。例如,假如您决定更改 stores 演示数据库的 items 表中列的顺序。您可通过下列这些步骤重新组织 items 表,将 quantity 列从第五个位置移到第三个位置:
  1. 创建新表 new_table,在第三个位置包含列 quantity
  2. 以来自当前的 items 表的数据填充该表。
  3. 删除旧的 items 表。
  4. 以标识符 items 重命名 new_table
下列示例使用 RENAME TABLE 语句作为最后的步骤:
CREATE TABLE new_table
   (
   item_num         SMALLINT,
   order_num        INTEGER,
   quantity         SMALLINT,
   stock_num        SMALLINT,
   manu_code        CHAR(3),
   total_price      MONEY(8)
   );
INSERT INTO new_table
   SELECT item_num, order_num, quantity, stock_num,
        manu_code, total_price FROM items;
DROP TABLE items;
RENAME TABLE new_table TO items;