2012-03-21 6 views
-1

私は4列のテーブルc1, c2, c3, c4を持っています。 c1およびc2は、テーブルの主キーを形成します。削除クエリが動作しないフォームJavaアプリケーション

Javaで次のコードを実行すると、アプリケーションでハングします。

DELETE from mytable 
where c1 = 'val' 
    and c2 = 'val2' 

ただし、Oracle DBコンソールでも同じクエリが正常に実行されます。 DELETE from mytable where c3 = 'val'を実行すると、アプリケーションから完全に正常に動作します。

何故その理由が考えられますか?

+0

「c1」と「c2」のデータタイプは何ですか?両方のケースで異なるクエリプランを取得していますか?どちらの場合でも文字列リテラルを使用していますか?あるいは、ある場合にバインド変数を使用していますか? –

答えて

0

ただ1つのOracleセッションで別のセッションがブロックされる可能性があります。この場合、 "コンソール"セッションブロックのJavaアプリケーションセッション。 "Oracle DBコンソール"セッションでCOMMITを試行してください。

コミットせずに1つのセッションからいくつかの行を削除し、別のセッション(Javaアプリケーション)から同じ行を削除しようとすると、最初のセッションがコミット(またはロールバック)されるまでハングします。