最近项目出现一个比较奇怪的问题,如下:
在Java中先设定conn.setAutoCommit(false);
然后用同一个connection调用两个存储过程,
第一个dao.insertIntoTable(conn),这个存储过程会在两三个表
中插入一条记录。
第二个dao.getFromTable(conn),这个存储过程会去查询刚才插入
的那些记录
代码如下:
Dao dao = new Dao();
Connection conn= dao.getConnection();
conn.setAutoCommit(false);
dao.insertIntoTable(conn);
dao.getFromTable(conn);
conn.commit();问题:第二个存储过程dao.getFromTable(conn),有时候会查询不到
第一个存储过程插入的数据,当程序都运行完后,到DB去查询
却可以查询得到。
我的分析:在同一个事务中,数据的修改是可见的,理论上应该在第二个
存储过程中是可以查询到第一个存储过程的修改的。而且就用上面的
那个例子在本地环境中测试,是可以查询的到的,为什么在生产环境中却
不行呢,而且问题出现的频率挺高的。希望有大侠指点迷津!!!!