假如在服务器端中,数据库中有1条记录set A,在文件系统对应着一个文件file A,
客户端一个HTTP请求过来,穿上来一条记录set B,一个文件file B,要求在服务器端,让B取代A,具体行为如下:
1,删除记录set A;
2,删除文件file A;
3,插入记录set B;
4,插入文件file B;其中从1到4这几个步骤中如果其中1个步骤发生异常,我想恢复到操作之间的状态,
就是指让这4个步骤成为一个事务,把这4个操作作为1个操作,
请问各位有什么最佳实践吗?在极端异常发生的情况下可以恢复。 

解决方案 »

  1.   

    本人思路如下,首先用程序把file A,File B备份,加入try,catch机制,尝试执行1,2,3,4步,若出现异常,则把1,3步数据库操作回滚rollback,把A文件恢复,把B文件替换。虽然有点麻烦,但是我觉得还是一种方法
      

  2.   

    在try catch和同一个事务中首先执行删除记录set A,然后插入set B,此时出现异常就事务回滚,能够维持之前状态,如果此时没有异常,那么将File A写入内存中作为备份,同时删除File A 写入File B如果出现异常,那么恢复File A。同时数据库事务回滚。