Зафиксировать определенное количество записей в БД с помощью 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.