忍者ブログ
Admin§Write

ぷろぐらみんぐ徒然

文系4大卒がなぜか職業ぷろぐらまになって早10年。 とっくに三十路は過ぎた。 いつまでも派遣プログラマだと死亡フラグが立つのでそれよりきり前に脱出成功。今後の事はまだ良くわからん。 ここのところ愛してやまないバンドはFuzzy Control。 興味を持ってもらえたらうれしいです。 この欄だとタグが使えないみたいなのでURLも。 http://www.fuzzycontrol.jp/

HOME ≫ Entry no.20 「[PostgreSQL] ERROR: current transaction is aborted, commands ignored until end of transaction blockって言われた」 ≫ [25] [24] [23] [22] [21] [20] [19] [18] [17] [16] [15]

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


[PostgreSQL] ERROR: current transaction is aborted, commands ignored until end of transaction blockって言われた

今回も挙動の違いなのですが、PostgreSQLのJDBCドライバって一度SQLExceptionがthrowされるとcommit/rollbackしないと後続処理ができないのね。


try{
  Connection connection = getConnection();
  Statement statement = connection.createStatement();
  // キー重複エラー
  statement.executeQuery("INSERT INTO HAGE (KEY) VALUES (1)");
}catch(SQLException e){
    // リカバリ実行
  statement.executeQuery("DELETE FROM HAGE WHERE KEY = 1"); 
  // ↑この行でエラー
}
リカバリ実行をする前にrollback、commitをしてあげれば更にSQLExceptionがthrowされる事はなくなるようですが…今まで例外が発生したらcatch節の中で更に処理を…っての結構やってきてたけど本来それは推奨されない処理なんじゃないかと思えてきた。
ちなみに上記Javaコードは適当に雰囲気で書いただけなので間違ってても気にしないでください。
PR

●Thanks Comments

●この記事にコメントする

お名前
タイトル
文字色
E-mail
URL
コメント
絵文字 Vodafone絵文字 i-mode絵文字 Ezweb絵文字
パスワード ※投稿者編集用
秘密? ※チェックすると管理人にしか見えません

●この記事へのトラックバック

TrackbackURL:

≪ [PostgreSQL] SQLエラーコードが設定されない |PageTop| [PostgreSQL] 表の切り捨て ≫

※ 忍者ブログ ※ [PR]
 ※
Writer 【へっぽこPG】  Design by NUI.T  Powered by NinjaBlog