我需要在一個原子操作中重命名兩個表格,以便用戶永遠無法看到處於中間狀態的數據庫。如何在MySQL中的一個原子操作中重命名兩個表格
我使用MySQL和發現,這起案件在documentation完美描述:
13.3.3語句造成隱式提交
本節中列出(該報表和任何同義詞對他們來說) 隱含結束當前在當前會話中的任何交易,因爲如果 你做了執行該語句
[...]
前一個COMMIT定義或修改數據庫對象的數據定義語言(DDL)語句。 ALTER DATABASE ...升級數據目錄名稱, ALTER EVENT,ALTER PROCEDURE,ALTER SERVER,ALTER TABLE,ALTER VIEW, CREATE DATABASE,CREATE EVENT,CREATE INDEX,CREATE PROCEDURE,CREATE SERVER,CREATE TABLE,CREATE TRIGGER,CREATE VIEW,DROP DATABASE,DROP EVENT,DROP INDEX,DROP PROCEDURE,DROP SERVER,DROP TABLE,DROP TRIGGER,DROP VIEW,安裝插件(如MySQL的5.7.6的),RENAME TABLE, TRUNCATE TABLE,卸載PLUGIN (從MySQL 5.7.6開始)。
但也許有某種解決方法或類似的東西?
我的情況是這樣的:
- 我有一個當前的數據在一個名爲
current
- 表中設置我收集新的數據在一個名爲
next
- 表中設置,我需要重新命名
current
表current_%current_date_time%
和next
表到current
在一個原子操作
太棒了!因此,用戶無法看到第一次重命名已完成但第二次重命名尚未完成的時刻,對嗎? – FrozenHeart
是的,沒錯。 – fancyPants