2013-06-11 3 views
0

Как вы выдаете один вызов JDBC для Postgres, который включает в себя 2 оператора выбора? Два оператора select выбирают из разных наборов таблиц и возвращают два разных набора результатов, поэтому их нельзя объединить. Цель состоит в том, чтобы убедиться, что то, что читается из базы данных, представляет собой согласованный снимок данных в таблицах в тот момент, когда выбираются проблемы. Если выдается два отдельных оператора выбора, есть вероятность, что некоторые данные будут обновлены после первого выбора и перед вторым.postgres несколько операторов JDBC select в пакете

Похоже, что java.sql.Statement's addBatch() и executeBatch() не могут использоваться - это может использоваться только для обновлений. Попытка использовать его при выборе вызывает PSQLException с сообщением «Результат был возвращен, когда никто не ожидал». on executeBatch().

ответ

2

Вам не нужно перепрыгивать через любые обручи для этого. Просто BEGIN транзакция в изоляции SERIALIZABLE, и два оператора будут видеть согласованное представление данных.

См. the JDBC tutorial.

Нет другого способа обеспечить, чтобы два оператора отображали одни и те же данные. Вы можете отправить их вместе, но, если они не заключены в транзакцию, они все равно могут видеть разные данные.

Смежные вопросы