我对如何提交事务需要一些时间来进行更新感到困惑。
这是我正在尝试的场景:
1.提交交易(所有更新声明)
2.转到数据库并尝试获取更新
在这里,当我尝试获取更新时,有时我没有得到最新的更新 有时我会得到旧版本的数据。
这里有更多细节: 在事务中我有两个更新语句说它在每次更新时将一个int字段更新为1 例如:在任何更新之前,我在db中的值为5,现在具有两个更新的事务将使其成为7。
提交事务后,我尝试使用连接对象和PreparedStatement来获取它。
我得到的结果是6.不是7.虽然当我在DB上看到7时。
所以,我做了一些调试,并尝试跟踪数据库更新的时间戳和获取数据的时间戳。
令我惊讶的是,我获取数据的时间戳少于DB上次更新的时间戳。
有没有人对此有任何想法?
答案 0 :(得分:0)
与其他人所说的非常相似,您的代码可能只是阅读已提交的事务。也许你认为你实现了交易,而事实上你却没有。例如,您对db的查询可能是未提交的读取(从表中选择*,其中x = some_value with ur)并且您的代码正在执行提交读取,这就是您看到不同值的原因。