- PR -

current transaction is aborted

1
投稿者投稿内容
935
会議室デビュー日: 2005/01/14
投稿数: 13
投稿日時: 2007-07-24 20:55
お世話になります。
Postgre8.0&Javaで開発しています。

トランザクション発行
try{
追加SQL発行処理
}catch(Exception ex){
更新SQL発行処理
}
コミット発行

※すでにデータが登録されているならば、更新処理を行うという意図

を処理した場合、更新SQL発行処理をすると、「current transaction is aborted, commands ignored until end of transaction block」が出力され、エラーとなります。
このエラーの意味を調べているのですが、教えてください。
なお、処理を↓のように変更した場合、エラーは発生しません。

トランザクション発行
try{
更新SQL発行処理
}catch(Exception ex){
追加SQL発行処理
}
コミット発行

またOracle10gでは、当初の処理を行ってもエラーは発生しません。
Postgreのエラーでしょうか?


あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2007-07-24 21:38
PostgreSQLでは、トランザクション中にエラーが発生すると
ロールバックしない限り以降の操作も全てエラーになります。

なので、
引用:

935さんの書き込み (2007-07-24 20:55) より:
トランザクション発行
try{
追加SQL発行処理
}catch(Exception ex){
更新SQL発行処理
}
コミット発行


という構造には出来ません。

不便と言えば不便ですが、
正常処理に例外を使うな、とも言えるでしょう。

[追記]
引用:

トランザクション発行
try{
更新SQL発行処理
}catch(Exception ex){
追加SQL発行処理
}


これだと存在しない場合に0件更新で正常終了です。
[/追記]

[ メッセージ編集済み 編集者: あしゅ 編集日時 2007-07-24 22:02 ]
1

スキルアップ/キャリアアップ(JOB@IT)