Зафиксировать определенное количество записей в БД с помощью Java

У меня есть таблица в БД, например, TableOne.
По некоторым правилам я должен зафиксировать N записей из этой таблицы в другие таблицы.
Можно ли сделать с JDBC или ResultSet или CachedRowSet?

Предварительный поток, как я вижу:
1. перебрать ResultSet TableOne
2. приращение counter если определенное условие выполнено
3. если условие не выполнено, пришло время зафиксировать в других таблицах БД N записей =counter
4. зафиксировать эти N записей

Итак, вопрос в шаге 4.
Как это можно реализовать?

Спасибо.

1 ответ

Решение

Назначение счетчика неясно, поэтому я предполагаю, что вы просто используете его, чтобы проиллюстрировать тот факт, что вы делаете только те записи, которые соответствуют условию.

Попробуйте создать оператор вставки, который выполняет всю работу:

INSERT INTO table2 (a, b, c)
    SELECT a, b, c FROM table1
WHERE myConditionIsMet

Другой вариант - циклически перебирать набор записей и вставлять запись каждый раз, когда выполняется условие. Вы должны заключить цикл в транзакцию, чтобы ничего не фиксировалось до тех пор, пока цикл не завершится. Мой JDBC немного ржавый, так что вот пример psuedocode:

connection.startTransaction()
for row in records
    if row condition
        connection.execute('INSERT ROW STATEMENENT')
connection.commitTransaction()

Первый подход предпочтительнее, но могут быть ситуации, когда условие не может быть определено в выражении SQL.

Другие вопросы по тегам