2017-02-16 174 views
0

目前我一直在使用双重入场系统的会计程序。在创建记录时,一个账户被借记,另一个账户被记入账户,所以他们的金额必须在数据库中更新。碰撞后处理交易

比方说,在数据库中更新第一个帐户之后,系统崩溃并且第二个帐户的金额不变;这种情况会导致数据不一致,所以我的问题是:处理这个问题的最好方法是什么?数据库恢复后应立即撤消第一笔交易还是继续尝试更新第二个帐户?

我正在用mysql的hibernate和spring框架。提前致谢。

+0

可能相关:http://stackoverflow.com/questions/8352870/will-mysql-transactions-rollback系统崩溃 –

+0

崩溃可能会发生,并且可能是混乱的,但请记住,如果您的Java应用程序崩溃,那么MySQL中的事务仍应该是原子的,即整个事情成功或者没有发生在所有。 –

回答

1

看来你需要分布式事务和两阶段提交。

the example 2个数据源(似乎是你的情况下)和一个更example为数据源加上消息队列