我注意到我的应用程序中有奇怪的行为。看起来在提交后立即看不到已提交的数据。算法看起来像这样:
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。任何想法,将不胜感激。
最佳答案
此行为对应于REPEATABLE READ隔离模式,请参见SET TRANSACTION:
尝试connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED)
看看是否有所作为。