Java JDBC - Plusieurs préparé instruction bulk insert
À l'aide de JDBC (Oracle) j'ai besoin d'insérer sur les milliers de lignes dans chacun des deux tableaux. Quelque chose comme ceci:
"INSERT INTO TABLE_A (A_ID, A_NAME, A_LAST_NAME) VALUES (MY_SEQUENCE.NEXTVAL, ?, ?)";
"INSERT INTO TABLE_B (B_ID, B_DESCRIPTION) VALUES (MY_SEQUENCE.CURRVAL, ?)";
Le problème est que les deux tables sont reliées par séquence commune, afin que l'ordre des instructions est important.
Il serait assez facile si j'avais un seul tableau. Dans ce cas, j'ai utilisé le code:
String insert = "Insert into TABLE_A(A_ID, A_NAME, A_LAST_NAME) values(MY_SEQUENCE.NEXTVAL, ?, ?)";
conn.setAutoCommit(false);
PreparedStatement ps = conn.prepareStatement(insert);
for(MyObject obj : myCollection) {
ps.setString(1, obj.getName());
ps.setString(2, obj.getLastName());
ps.addBatch();
}
ps.executeBatch();
conn.commit();
ps.close();
Mais cette approche ne peut fonctionner qu'avec un prêt de tresorerie et donc avec une seule plaquette. Comment puis-je fournir une solution pour ce problème?
OriginalL'auteur agav | 2011-08-25
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer
puis
OriginalL'auteur Clint
Si je comprends votre problème correctement, vous avez un problème avec NEXTVAL et CURRVAL depuis CURRVAL pourrait changer en raison d'autres DB utiliser?
Si oui, vous pouvez modifier votre code pour cet ordre:
Ai-je comprends votre problème correctement?
Si vous utilisez le même "currentNextVal" de mon pseudo-code, vous permettra de le réaliser. Vous n'avez pas à effectuer dans un lot, vous pouvez le faire en 2 lots...
OriginalL'auteur IncrediApp