要重命名SQL中的任何表,我们使用以下命令:
RENAME OldTableName TO NewTableName
这如何在内部发挥作用?
我的假设是它可能首先使用AS SELECT
使用NewTableName创建一个表,然后用DROP
删除旧表,就像我们在处理C中的文件时重命名文件一样。我是对的,或者它的工作方式不同?
答案 0 :(得分:5)
它的工作方式不同。数据不会被复制。表的名称只需在元数据表中更新 - 以及对触发器等内容的引用。
答案 1 :(得分:2)
您可以从here获得一些帮助: -
重命名操作以原子方式完成,这意味着没有其他操作 会话可以在重命名运行时访问任何表。对于 例如,如果您有一个现有的表old_table,则可以创建 另一个表new_table具有相同的结构但是为空,并且 然后用空的表替换现有的表,如下所示 (假设backup_table尚不存在)。 ...............
执行RENAME时,您不能拥有任何锁定的表或活动 交易。您还必须具有ALTER和DROP权限 原始表,以及新表上的CREATE和INSERT权限。
如果MySQL在多表重命名中遇到任何错误,它会执行 对所有重命名的表进行反向重命名,以将所有内容返回给它 原始状态。