0

我真的很困惑提交事务如何需要一些时间来进行更新。

这是我正在尝试的场景:
1. 提交事务(所有更新语句)
2. 转到数据库并尝试获取更新

在这里,当我尝试获取更新时,有时我没有得到最新的更新。
有时我会得到旧版本的数据。

这里有更多细节:在事务中,我有两个更新语句说它在每次更新时将一个 int 字段更新 1 例如:在任何更新之前,我在 db 中有值 5 现在有两个更新的事务将使其变为 7。

提交事务后,我尝试使用连接对象和 PreparedStatement 来获取它。

我得到的结果是 6。不是 7。虽然当我在 DB 上看到 7 时。

因此,我进行了更多调试,并尝试跟踪数据库更新的时间戳和获取数据的时间戳。

令我惊讶的是,我获取数据的时间戳小于上次更新数据库的时间戳。

有人对此有任何想法吗?

4

1 回答 1

0

就像其他人所说的那样,您的代码可能只会读取已提交的事务。也许您认为您提交了交易,而实际上您并没有。例如,您对 db 的查询可能是未提交的读取(从 x=some_value 和 ur 的表中选择 *)并且您的代码正在执行已提交的读取,这就是您看到不同值的原因。

于 2013-04-02T04:03:53.223 回答