跳到主要内容

RENAME TABLE

描述

该语句用来对一个或多个表进行重命名。

使用限制及注意事项

  • 表重命名过程中,系统会自动锁定这个过程,并且阻止任何其他线程对这些表的读取操作,直到重命名完成。

  • 如果目标表上存在持续的活跃事务,重命名操作将会等待。在所有活跃事务都提交或回滚之前,表的重命名处理无法进行。

  • 如果此语句用于对多个表进行重命名,则重命名操作从左到右进行。

  • 在执行 RENAME TABLE 时,不能有被锁定的表,也不能有处于活性状态的事务。

    信息

    开启配置项 enable_lock_priority 后,RENAME TABLE 具有最高的上锁优先级。

  • RENAME TABLE 可以用于视图,但不支持移动到其他数据库中。

  • RENAME TABLE 操作过程中,由于加入了表锁定和读写防御措施,这将增加操作的耗时。为了避免对其他用户执行 DDL 操作造成影响,建议不要批量进行 RENAME TABLE 操作。

权限要求

该操作需要拥有原表的 ALTERDROP 权限以及新表的 CREATEINSERT 权限。

语法

RENAME TABLE table_name TO [new_database_name.]new_table_name
[, table_name2 TO [new_database_name.]new_table_name2 ...];

参数解释

参数描述
table_name原表名。
new_table_name新表名。
table_name TO [new_database_name.]new_table_name多个表重命名时,使用逗号(,)分隔。您可以指定 new_database_name 将表移动到其他数据库中。

示例

  1. 创建表 t1t2

    CREATE TABLE t1(c1 INT);
    CREATE TABLE t2(c1 INT);
  2. 将表 t1 重命名为 t11

    RENAME TABLE t1 TO t11;
  3. 将表 t11 重命名为 t111,表 t2 重命名为 t22

    RENAME TABLE t11 TO t111, t2 TO t22;
  4. 将表 t22 移动到 mysql 数据库中。

    RENAME TABLE t22 TO mysql.t22;