2013-06-11 3 views
0

2 개의 SELECT 문을 포함하는 Postgres에 대한 단일 JDBC 호출을 어떻게 처리합니까? 두 개의 select 문은 서로 다른 테이블 집합에서 선택하고 두 개의 다른 결과 집합을 반환합니다. 따라서 결합 할 수 없습니다. 목표는 데이터베이스에서 읽은 내용이 선택 항목이 나타나는 즉시 테이블의 일관된 데이터 스냅 샷임을 보장하는 것입니다. 두 개의 분리 된 선택.이 _ 행되면 첫 x 째 선택 후 두 x 째 선택 이전에 일부 데이터가 갱신 될 수 있습니다.Postgres 여러 JDBC SELECT 문을 일괄 처리

java.sql.Statement의 addBatch() 및 executeBatch()는 사용할 수 없으며 업데이트 할 때만 사용할 수 있습니다. 선택 항목과 함께 사용하려고하면 "아무 것도 예상되지 않을 때 결과가 반환되었습니다."라는 메시지와 함께 PSQLException이 발생합니다. executeBatch()에서.

답변

2

당신은 이것을 위해 모든 농구를 뛰어 넘을 필요가 없습니다. 단지 BEGIN 트랜잭션은 SERIALIZABLE 격리 상태이며 두 명령문은 데이터의 일관된 뷰를 보게됩니다.

the JDBC tutorial을 참조하십시오.

두 문장이 동일한 데이터를 볼 수있는 다른 방법은 없습니다. 당신은 그것들을 함께 보낼 수 있지만, 거래가 끝나지 않으면 다른 데이터를 볼 수 있습니다.

관련 문제