1

如何向 Postgres 发出一个包含 2 个选择语句的 JDBC 调用?两个 select 语句从不同的表集中选择并返回两个不同的结果集 - 所以不能联合。目标是确保在选择出现问题的那一刻,从数据库中读取的是表中数据的一致快照。如果发出两个单独的 select 语句,则有可能在第一个 select 之后和第二个 select 之前更新某些数据。

看起来 java.sql.Statement 的 addBatch() 和 executeBatch() 不能使用 - 这只能用于更新。尝试将它与 select 一起使用会导致 PSQLException 并带有消息“A result was returned when none is expected”。在执行批处理()上。

4

1 回答 1

3

你不需要为此跳过任何障碍。只是BEGIN一个事务SERIALIZABLE隔离,两条语句将看到一致的数据视图。

请参阅JDBC 教程

没有其他方法可以确保两个语句看到相同的数据。您可以将它们一起发送,但除非它们包含在事务中,否则它们仍然可以看到不同的数据。

于 2013-06-11T02:04:29.817 回答