当前位置:  开发笔记 > 后端 > 正文

如何在MySQL中的一个原子操作中重命名两个表

如何解决《如何在MySQL中的一个原子操作中重命名两个表》经验,为你挑选了1个好方法。

我需要在一个原子操作中重命名两个表,以便用户永远无法看到数据库处于中间状态.

我正在使用MySQL,并注意到这个案例在文档中有完美的描述:

13.3.3导致隐式提交的语句

本节中列出的语句(以及它们的任何同义词)隐式结束当前会话中活动的任何事务,就像在执行语句之前已完成COMMIT一样

[...]

定义或修改数​​据库对象的数据定义语言(DDL)语句.ALTER DATABASE ...升级数据目录名称,更改事件,更改程序,更改服务器,更改表,更改视图,创建数据库,创建事件,创建索引,创建过程,创建服务器,创建表,创建触发器,创建视图,删除数据库,DROP事件,DROP INDEX,DROP PROCEDURE,DROP SERVER,DROP TABLE,DROP TRIGGER,DROP VIEW,DROP VIEW,安装插件(从MySQL 5.7.6开始),RENAME TABLE,TRUNCATE TABLE,UNINSTALL PLUGIN(从MySQL 5.7.6开始) .

但也许有某种解决方法或类似的东西?

我的情况看起来像这样:

我在名为的表中有一个当前数据集 current

我在名为的表中收集了一个新的数据集 next

我需要将current表重命名为current_%current_date_time%next表中的current一个原子操作

fancyPants.. 14

好吧,容易......

RENAME TABLE current TO current_20151221, next TO current;

如手册中所述.它说这是一个原子操作.为了清除这一点,隐式提交与它无关.那是一个不同的故事.这只是说,这些陈述结束了公开交易.



1> fancyPants..:

好吧,容易......

RENAME TABLE current TO current_20151221, next TO current;

如手册中所述.它说这是一个原子操作.为了清除这一点,隐式提交与它无关.那是一个不同的故事.这只是说,这些陈述结束了公开交易.

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有