0

DB にテーブルがあります。たとえば、TableOneです。
いくつかの規則により、このテーブルから N 個のレコードを他のテーブルにコミットする必要があります。
jdbc または ResultSet または CachedRowSet で行うことは可能ですか?

Preliminary flow, as i see:
1. loop through ResultSet of TableOne
2. increment counter if certain condition is met
3. if condition is not met, it's time to commit to other DB tables N records=counter
4. commit these N records

So,the question is in step 4.
How it may be implemented?

Thank you.

4

1 に答える 1

0

カウンターの目的は明確ではないので、条件に一致するレコードのみをコミットしているという事実を説明するためにカウンターを使用していると仮定します。

すべての作業を行う挿入ステートメントを作成してみてください。

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

もう1つのオプションは、レコードセットをループして、条件が満たされるたびにレコードを挿入することです。ループが完了するまで何もコミットされないように、ループをトランザクションでラップする必要があります。私のJDBCは少し錆びているので、ここに擬似コードの例を示します。

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

最初のアプローチが望ましいですが、SQL式内で条件を判別できない状況もあるかもしれません。

于 2010-09-14T16:14:12.400 に答える