UDN-企业互联网技术人气社区

板块导航

浏览  : 933
回复  : 0

[讨论交流] MySQL如何将两个表名对调

[复制链接]
菊花一朵朵的头像 楼主
发表于 2016-3-23 19:36:18 | 显示全部楼层 |阅读模式
本帖最后由 菊花一朵朵 于 2016-3-23 20:27 编辑

  问题:

  有位同学问我,在类似pt-osc场景下,需要将两个表名对调,怎么才能确保万无一失呢?

  分析:

  估计其他同学就笑了,表名对掉还不简单吗,相互RENAME一下嘛。

  但是,我们想要的是同时完成表名对调,如果是先后的对掉,可能会导致有些数据写入失败,那怎么办?

  其实也不难,从MySQL手册里就能找到方法,那就是:同时锁定2个表,不允许写入,然后对调表名。

  我们通常只锁一个表,那么同时锁两个表应该怎么做呢,可以用下面的方法:
  1. LOCK TABLES t1 WRITE, t2 WRITE;
  2. ALTER TABLE t1 RENAME TO t3;
  3. ALTER TABLE t2 RENAME TO t1;
  4. ALTER TABLE t3 RENAME TO t2;
  5. UNLOCK TABLES;
复制代码

  看到了吧,其实很简单,两个表同时加表级写锁,然后用ALTER语法改名就可以了。

  废话挺多的,谢谢各位客官耐心看完 :)
                                原文作者:OurMySQL  来源:MySQL中文网

相关帖子

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部