mysql - Atomic [移动到另一个表,然后删除原始数据]

标签 mysql atomic

我有一个Data 表和一个Archive 表。

一个 webapp 将数据注入(inject)Data 表,一个 cron 作业每小时提取一次数据并将其存档在 Archive 表中(这使 数据表小,使用起来很快)。

如我所见,有两个 psudo-SQL 查询要运行:

INSERT Archive SELECT * FROM Data;

&

DELETE FROM Data;

但是,我只想删除复制成功的数据,如果复制失败,我希望它保持一致的状态,数据既不会移动一半,也不会删除。

正确的做法是什么?

最佳答案

有交易。

start transaction;
insert into archive select * from data;
delete from data where primary_key in (select primary_key from archive);
commit;

关于mysql - Atomic [移动到另一个表,然后删除原始数据],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2875534/

相关文章:

mysql - 我应该在 mysql 中使用哈希索引进行相等查找吗

multithreading - 哪个更有效,基本互斥锁或原子整数?

ios - OSAtomicIncrement64 x 类属性...有什么优势?

java - Java thread.start 可以重新排序吗?

java - MySQL,在 Java 应用程序中使用 JDBC - 看似空的结果集,但查询格式正确

php - 更改查询以计算唯一值的数量而不是总行数

php将多个用户登录后重定向到多个页面

python - 无法安装mysqlclient

c++ - std::atomic<T> 上 volatile 操作的用例是什么?

c++ - 自动更新最大值