Зафиксировать определенное количество записей в БД с помощью Java - PullRequest
0 голосов
/ 14 сентября 2010

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

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

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

Спасибо.

1 Ответ

0 голосов
/ 14 сентября 2010

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

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

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.

...