【发布时间】:2017-07-26 18:49:45
【问题描述】:
我正在创建一个进程,该进程通过 JDBC 连接到给定的 SQL Server 数据库,扫描每个表,并读取自上次运行此进程以来已插入或更新的任何新数据。出于性能考虑,数据库的所有者将不允许此过程对任何表进行联接。
有问题的场景
- 表 A 是表 B 的父表
- 此进程从表 A 中读取数据
- 在读取表 B 的进程之前,插入了新的父记录 到表 A 中,新的子记录被插入到表 B 中
- 读取表 B 时,将存在不存在的子记录 在结果集中有对应的父记录 以前读过的表 A
如何在没有连接的情况下查询多个相关表,并使用 JDBC 获得一致的数据?
【问题讨论】:
-
你能用ASP.NET等可以处理数据的服务吗?
-
我正在使用 JAVA 8 并通过 JDBC 连接
-
ROFL。由于性能问题,他们不会允许连接,但他们可以读取每个表的每一行吗?这完全没有任何意义。他们阻止以标准方式访问数据,因为它可能会影响性能,但允许非标准方式绝对会对性能产生负面影响。有人需要和这个人谈谈,问他们这个愚蠢的想法是从哪里想到的。
-
进程不会读取每一行。最后修改的时间戳列将用于确定自上次运行以来发生了什么变化。
-
即便如此,不使用 join 的奇怪强制执行是我听说过的最奇怪的事情之一。
标签: sql sql-server database jdbc transactions