私は動作中のdbconnection(JDBC、Oracle)を持っており、ほとんどのリクエスト、特にいくつかのPrepared Batched Statementsは正常に動作します。主キーを持つ
既存のデータベースがあります。 testdb
MESSID
ステートメント (準備されていない) を使用する場合stm
、次のようにするとうまくいきます::
stm.addBatch("insert into testdb (\"MESSID\",\"METAFID\",\"POSITIONSNUMMER\") select case when count(*)=0 then 1 else 1+max(messid) end,HEXTORAW(''3637534FD7ED259449DBF86E2A283890''),1 from testdb");
stm.addBatch("insert into testdb (\"MESSID\",\"METAFID\",\"POSITIONSNUMMER\") select case when count(*)=0 then 1 else 1+max(messid) end,HEXTORAW(''A17F5E246F1E44D78228C39274E226B2''),2 from testdb");
stm.addBatch();
stm.executeBatch()
prepareCalls (PreparedStatements、set を使用して "METAFID"、"POSITIONSNUMMER" を挿入する...) で同じことを行うと、これらのクエリは実行時に苦労し.executeBatch
ます。
よくわかりませんが、select case when count(*)=0 then 1 else 1+max(messid)
フラグメントが間違っていると思います(java.sql.BatchUpdateException: ORA-00001: Unique Constraint (????.testdb))。
誰が自分の経験を助けたり伝えたりできますか?