[PostgreSQL] ERROR: current transaction is aborted, commands ignored until end of transaction blockって言われた
2009.03.12 |Category …PostgreSQL
今回も挙動の違いなのですが、PostgreSQLのJDBCドライバって一度SQLExceptionがthrowされるとcommit/rollbackしないと後続処理ができないのね。
ちなみに上記Javaコードは適当に雰囲気で書いただけなので間違ってても気にしないでください。
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
●この記事にコメントする
●この記事へのトラックバック
TrackbackURL: