Как заставить Preparedstatement.executeBatch () работать на хорошие записи, если не удается вставить одну запись

1

В моем java-коде у меня есть подготовленный оператор ps_temp.

PreparedStatement ps_temp;

// loop

ps_temp.setString(1,'abc');
....
....
ps_temp.addBatch();

// end loop

ps_temp.executeBatch();

Теперь одна из записей в пакете создала ограничение Unique Index, которое в конечном итоге приведет к ошибке ps_temp.executeBatch(). Даже хорошие записи в партии не помещаются в таблицу.

Итак, возможно ли, что если у моей партии есть хорошие и некоторые плохие записи (что может вызвать ограничение целостности), ТОГДА МЕНЬЕ ХОРОШИЕ ЗАПИСИ ВСТАВЛЯЕТСЯ В ТАБЛИЦУ?

Заранее спасибо !! Noman

Теги:
plsql
prepared-statement
bind-variables

1 ответ

1

Для партии записей довольно часто бывает мало плохих. Если вы попытаетесь вставить все записи за один раз, а одна запись не удалась, вся серия вставок будет отклонена. Это ожидается и является основной целью "обработки транзакций".

Обычно для пакетных вставок вы можете использовать два подхода:

1) Зафиксировать после каждой вставки записи → Очень интенсивный процесс.

2) Разделите общие записи на более мелкие "куски" и вставьте в базу данных. Таким образом, только фрагмент, содержащий плохую запись, потерпит неудачу, и в базу данных будут добавлены другие куски.

В качестве альтернативы, если вы не хотите самостоятельно обрабатывать эти вещи, перейдите на рамки. Весенняя партия

В этом случае может быть один из ваших вариантов

Ещё вопросы

Сообщество Overcoder
Наверх
Меню