PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Récupération de l'identifiant de série à partir des lignes insérées par lots dans postgresql

Quelque chose comme ceci devrait fonctionner :

// tell the driver you want the generated keys
stmt =  c.prepareStatement("INSERT ... ", Statement.RETURN_GENERATED_KEYS);

stmt.executeBatch();

// now retrieve the generated keys
ResultSet rs = stmt.getGeneratedKeys();
while (rs.next()) {
 int id = rs.getInt(1);
 .. save the id somewhere or update the items list 
}

Je pense (je ne suis pas sure!) que les clés sont retournées dans l'ordre où elles ont été générées. Ainsi, la première ligne du ResultSet doit correspondre au premier "élément" de la liste que vous traitez. Mais vérifiez-le !

Modifier

Si cela ne fonctionne pas, essayez de spécifier les colonnes réelles pour lesquelles les valeurs sont générées :

stmt =  c.prepareStatement("INSERT ... ", new String[] {"id"});