由于高事务,计算sql浏览器和java JDBC中的不匹配

时间:2015-01-06 10:29:12

标签: java-ee sql-server-2005 transactions

我正在使用SQL Server 2005.此 table1 上有更多并发访问权限。

当我在SQL浏览器中执行以下查询时,我获得了2000条记录,但是当使用java执行相同的查询时,没有记录变化。

EX: 1st execution --> 2000 records,
    2nd execution --> 2005 records, 
    3rd execution --> 1990 records


 select 
     REGISTRATION_NO as TOTAL_ASSETS_COUNT 
 from 
     Contable1 a 
 inner join 
     table2 b on a.REGISTRATION_NO = b.Registration_no 
              and a.System_id = b.System_id 
 inner join 
     table3 c on b.Registration_no = c.VehicleNo 
              and b.System_id = c.System_id 
 where 
     a.CLIENTID = ? and a.System_id = ? and b.User_id=?

我正在使用隔离级别 READ COMMITTED

由于 table1 上的高交易,计数会有所不同。

请帮助解决为什么计数在java中的变化。

注意:Registration_No是主键。

提前致谢。

1 个答案:

答案 0 :(得分:1)

正如您所说,由于交易量很大,计数存在差异。

可能有以下可能会有不同的数量:

1)在您阅读数据之前,可能会在后台发生一些事务。或

2)您加入的表格中可能存在一些重复数据。

3)由于 @greet 表示您加入的其他表格的值可能会发生变化。

因为我会要求您正确检查查询。如果你声称以上不是可能性。我请求您提供有关表模式的更多详细信息。