gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 06:32:24 27 4
gpt4 key购买 nike

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

我正在使用 MySQL 并注意到 documentation 中对这种情况进行了完美描述:

13.3.3 Statements That Cause an Implicit Commit

The statements listed in this section (and any synonyms for them) implicitly end any transaction active in the current session, as if you had done a COMMIT before executing the statement

[...]

Data definition language (DDL) statements that define or modify database objects. ALTER DATABASE ... UPGRADE DATA DIRECTORY NAME, 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, INSTALL PLUGIN (as of MySQL 5.7.6), RENAME TABLE, TRUNCATE TABLE, UNINSTALL PLUGIN (as of MySQL 5.7.6).

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

我的情况是这样的:

  • 我在名为current的表中有一个当前数据集
  • 我在名为 next 的表中收集了一个新数据集
  • 我需要将 current 表重命名为 current_%current_date_time% 并将 next 表重命名为 current 在一个原子操作中

最佳答案

好吧,简单...

RENAME TABLE current TO current_20151221, next TO current;

manual 中所述.那里说这是一个原子操作。只是为了澄清这一点,隐式提交与它无关。那是一个不同的故事。这只是说,这些语句结束了一个开放的交易。

关于mysql - 如何在 MySQL 中的一个原子操作中重命名两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34391759/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com