Hallo zusammen,
Ich möchte bestimmte Daten (die über mehrere Tabellen verteilt sind) in die selbe Tabelle kopieren - nur mit einer neuen ID. Grundsätzlich erledige ich das so (vereinfachter SQL):
Funktioniert auch soweit, wie es soll - Es werden alle Datensätze, bei denen spalte3 = 2 ist mit einer neuen ID nochmal in die Tabelle geschrieben und der Wert in spalte3 durch "5" ersetzt.
Spalte3 ist nicht eindeutig, es kann also vorkommen, dass in tbl1 mehrere Datensätze existieren, die in der spalte3 auf "2" stehen. Soweit auch kein Problem, funktioniert Reibungslos. Nur jetzt ist noch eine zweite Tabelle mit dieser Tabelle über eine eindeutige ID verknüpft, in welcher natürlich auch noch die entsprechenden Daten kopiert werden müssen. Da ich jetzt zum kopieren die IDs aus der 1. Tabelle benötige, habe ich mir gedacht, ich mache folgendes:
Der 1. Datensatz wird auch ohne Probleme eingetragen, aber beim 2. Durchlauf (in tbl1 wurden 2 Datensätze kopiert) wird bei rs.next() folgende Exception geworfen:
und ich hab kA warum.
Weiß da jemand Rat?
Danke!
Ich möchte bestimmte Daten (die über mehrere Tabellen verteilt sind) in die selbe Tabelle kopieren - nur mit einer neuen ID. Grundsätzlich erledige ich das so (vereinfachter SQL):
Code:
INSERT INTO tbl1 (spalte1, spalte2, spalte3) (SELECT spalte1, spalte2, 5 FROM tbl1 WHERE spalte3=2 ORDER BY spalte3)
Funktioniert auch soweit, wie es soll - Es werden alle Datensätze, bei denen spalte3 = 2 ist mit einer neuen ID nochmal in die Tabelle geschrieben und der Wert in spalte3 durch "5" ersetzt.
Spalte3 ist nicht eindeutig, es kann also vorkommen, dass in tbl1 mehrere Datensätze existieren, die in der spalte3 auf "2" stehen. Soweit auch kein Problem, funktioniert Reibungslos. Nur jetzt ist noch eine zweite Tabelle mit dieser Tabelle über eine eindeutige ID verknüpft, in welcher natürlich auch noch die entsprechenden Daten kopiert werden müssen. Da ich jetzt zum kopieren die IDs aus der 1. Tabelle benötige, habe ich mir gedacht, ich mache folgendes:
Code:
PreparedStatement ps = con.prepareStatement("SELECT id FROM tbl1 WHERE spalte3=2 ORDER BY id");
ResultSet rs = ps.executeQuery();
ps = con.prepareStatement("SELECT id FROM tbl1 WHERE spalte3=5 ORDER BY id");
ResultSet rs2 = ps.executeQuery();
while (rs.next() && rs2.next()) {
ps = con.prepareStatement("INSERT INTO tbl2 (spalte1, spalte2, verkn_mit_tbl1 ) (SELECT spalte1, spalte2, " + rs2.getInt("id") + " FROM tbl2 WHERE verkn_mit_tbl1=" + rs.getInt("id") + ")");
ps.execute();
}
Der 1. Datensatz wird auch ohne Probleme eingetragen, aber beim 2. Durchlauf (in tbl1 wurden 2 Datensätze kopiert) wird bei rs.next() folgende Exception geworfen:
COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver] CLI0125E Ungültige Reihenfolge für Funktion. SQLSTATE=HY010
und ich hab kA warum.
Weiß da jemand Rat?
Danke!