如何向Postgres发出一个包含2个select语句的JDBC调用?两个select语句从不同的表集中选择并返回两个不同的结果集 - 因此不能进行联合。目标是确保从数据库中读取的内容是选择出现问题时表中数据的一致快照。如果发出两个单独的select语句,则有可能在第一个选择之后和第二个选择之前更新某些数据。
看起来像java.sql.Statement的addBatch()和executeBatch()不能使用 - 这只能用于更新。尝试将其与选择一起使用会导致PSQLException,并显示消息“当没有预期时返回结果”。在executeBatch()。
答案 0 :(得分:2)
你不需要为此跳过任何箍。只需BEGIN
SERIALIZABLE
隔离中的事务,这两个语句就会看到一致的数据视图。
没有其他方法可以确保两个语句看到相同的数据。您可以将它们一起发送,但除非它们包含在交易中,否则它们仍然可以看到不同的数据。