RENAME TABLE
描述
该语句用来对一个或多个表进行重命名。
使用限制及注意事项
-
表重命名过程中,系统会自动锁定这个过程,并且阻止任何其他线程对这些表的读取操作,直到重命名完成。
-
如果目标表上存在持续的活跃事务,重命名操作将会等待。在所有活跃事务都提交或回滚之前,表的重命名处理无法进行。
-
如果此语句用于对多个表进行重命名,则重命名操作从左到右进行。
-
在执行
RENAME TABLE时,不能有被锁定的表,也不能有处于活性状态的事务。信息开启配置项 enable_lock_priority 后,
RENAME TABLE具有最高的上锁优先级。 -
RENAME TABLE可以用于视图,但不支持移动到其他数据库中。 -
在
RENAME TABLE操作过程中,由于加入了表锁定和读写防御措施,这将增加操作的耗时。为了避免对其他用户执行 DDL 操作造成影响,建议不要批量进行RENAME TABLE操作。
权限要求
该操作需要拥有原表的 ALTER 和 DROP 权限以及新表的 CREATE 和 INSERT 权限。
语法
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 将表移动到其他数据库中。 |
示例
-
创建表
t1和t2。CREATE TABLE t1(c1 INT);
CREATE TABLE t2(c1 INT); -
将表
t1重命名为t11。RENAME TABLE t1 TO t11; -
将表
t11重命名为t111,表t2重命名为t22。RENAME TABLE t11 TO t111, t2 TO t22; -
将表
t22移动到mysql数据库中。RENAME TABLE t22 TO mysql.t22;