Postgresql提交的数据不可见

时间:2013-04-05 09:08:29

标签: java postgresql jdbc

我注意到我的应用程序中存在奇怪的行为。看起来提交数据在提交后不可见。算法如下所示:

connection1 - insert into table row with id = 5
connection1 - commit, close
connection2 - open
connection2 - select from table row with id = 5 (no results)
connection2 - insert into table row with id = 5 (PRIMARY KEY VIOLATION, result is in db)

如果在connection2上选择没有返回结果,那么我会插入,否则它是更新。 服务器有很多数据库(~200),它看起来像提交完成但稍后更改在DB中。我使用java和jdbc。任何想法都将不胜感激。

1 个答案:

答案 0 :(得分:1)

此行为对应于REPEATABLE READ隔离模式,请参阅SET TRANSACTION

  

可重复阅读   当前事务的所有语句只能看到之前提交的行   第一个查询或数据修改语句   在这次交易中执行了。

尝试connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED),看看它是否有所作为。