当其中一个操作失败时,回滚数据库操作跨越单独的数据库会话

时间:2014-08-05 05:51:35

标签: mysql sql transactions commit rollback

我需要调用db程序3次。所有3个呼叫将在3个不同的数据库会话中。 要求是,如果3个调用中的任何一个失败,则所有三个事务都应该回滚。只有当所有3个程序都成功执行时,才能进行相应的提交。

已经尝试过的解决方案:

  1. 在方法内启动3个不同的连接。在这些连接上调用该过程,当其中一个连接失败时,在所有连接上调用rollback。当第二次调用的执行失败时,在第一次连接时调用回滚。这导致了SocketException。我没有可用的堆栈跟踪。

  2. 使用IBM WID和WPS:在单个WPS服务器事务中封装db服务调用,并对数据库过程进行3次调用。这导致部分提交,即第一次调用导致数据库内部插入,并且在第二次调用失败后没有回滚。

0 个答案:

没有答案