• ベストアンサー

コミット前の更新データをチェックするには?

UPDATE若しくはINSERTした結果のデータをチェックしてから、コミットするかロールバックするかを判断したいのですが、どうすればよいのでしょうか? Oracleを使用していてsqlplus上で実行してみるとうまくいくのですが、Javaで実行すると更新前のデータが取れます。 助けてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.2

別のConnectionからStatementを作成しているとかないですか? Connectionが違えばトランザクションも別になるので更新前の値が取得されると思います。

mizu-yu
質問者

お礼

ご回答ありがとうございます。 おっしゃられる通り、別のConnectionでStatementを生成してました。 Select文を発行するメソッドにConnectionを渡したら、できましたありがとうございした!

その他の回答 (2)

  • kazsharp
  • ベストアンサー率37% (16/43)
回答No.3

普通にできると思います。 #2の方もおっしゃられているように別Connectionの可能性があるので、問題の箇所のソースをある程度提示してはどうでしょうか。 どこかおかしい所があると思います。

mizu-yu
質問者

お礼

ご回答ありがとうございます。 おっしゃる通りでした! ありがとうございました!

回答No.1

う~ん。無理じゃないですかね。たぶん。 もしかしたらできるかもしれないですけど、自分にはわかりません。 java.sql.StatementのexecuteUpdate(String sql) は結果として UPDATE文なら更新した行数 INSERT文なら挿入した行数 をintで返します。 自分はこの返ってきた行数で判断してました。 0行だった場合はロールバックして例外を投げていました。 以上、参考になれば。

mizu-yu
質問者

お礼

ご回答ありがとうございます。 参考になりました! > UPDATE文なら更新した行数 > INSERT文なら挿入した行数 > をintで返します。 など、次回機会があったら使ってみたいと思います。

関連するQ&A