我有一个数据表和一个存档表.
Web应用程序将数据注入到数据表中,而cron作业每小时将数据拉出并将其存档在存档表中(这使数据表保持较小且可以快速使用).
我看到它有两个运行的psudo-SQL查询:
INSERT Archive SELECT * FROM Data;
Run Code Online (Sandbox Code Playgroud)
&
DELETE FROM Data;
Run Code Online (Sandbox Code Playgroud)
但是,我只想删除已成功复制的数据,如果复制失败,我希望它保持一致状态,数据既不会移动也不会被删除.
这样做的正确方法是什么?
有了交易.
start transaction;
insert into archive select * from data;
delete from data where primary_key in (select primary_key from archive);
commit;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2686 次 |
| 最近记录: |