1

2 つの select ステートメントを含む単一の JDBC 呼び出しを Postgres に発行するにはどうすればよいですか? 2 つの select ステートメントは、異なるテーブル セットから選択し、2 つの異なる結果セットを返すため、結合できません。目標は、データベースから読み取られるものが、選択が問題になった瞬間にテーブル内のデータの一貫したスナップショットであることを確認することです。2 つの別々の select ステートメントが発行された場合、最初の select の後、2 番目の select の前に一部のデータが更新される可能性があります。

java.sql.Statement の addBatch() と executeBatch() は使用できないようです。これは更新にのみ使用できます。これを select で使用しようとすると、PSQLException が発生し、「予期しないときに結果が返されました」というメッセージが表示されます。executeBatch() で。

4

1 に答える 1

3

これには何の苦労も必要ありません。BEGIN孤立したトランザクションと 2 つのステートメントだけSERIALIZABLEで、データの一貫したビューが表示されます。

JDBC チュートリアルを参照してください。

2 つのステートメントが同じデータを参照することを保証する他の方法はありません。それらを一緒に送信することはできますが、トランザクションにラップされていない限り、異なるデータを見ることができます。

于 2013-06-11T02:04:29.817 に答える