RENAME语句实际上如何工作?

时间:2013-09-19 13:40:07

标签: mysql sql

要重命名SQL中的任何表,我们使用以下命令:

RENAME OldTableName TO NewTableName

这如何在内部发挥作用?

我的假设是它可能首先使用AS SELECT使用NewTableName创建一个表,然后用DROP删除旧表,就像我们在处理C中的文件时重命名文件一样。我是对的,或者它的工作方式不同?

2 个答案:

答案 0 :(得分:5)

它的工作方式不同。数据不会被复制。表的名称只需在元数据表中更新 - 以及对触发器等内容的引用。

答案 1 :(得分:2)

您可以从here获得一些帮助: -

  

重命名操作以原子方式完成,这意味着没有其他操作   会话可以在重命名运行时访问任何表。对于   例如,如果您有一个现有的表old_table,则可以创建   另一个表new_table具有相同的结构但是为空,并且   然后用空的表替换现有的表,如下所示   (假设backup_table尚不存在)。   ...............

     

执行RENAME时,您不能拥有任何锁定的表或活动   交易。您还必须具有ALTER和DROP权限   原始表,以及新表上的CREATE和INSERT权限。

     

如果MySQL在多表重命名中遇到任何错误,它会执行   对所有重命名的表进行反向重命名,以将所有内容返回给它   原始状态。