我有一个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/