sql >> Base de Datos >  >> RDS >> PostgreSQL

Recuperación de la identificación de serie de las filas insertadas por lotes en postgresql

Algo como esto debería funcionar:

// 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 
}

Creo (yo no seguro!) que las claves se devuelven en el orden en que se generaron. Entonces, la primera fila del ResultSet debería corresponder al primer "elemento" de la lista que está procesando. ¡Pero verifica eso!

Editar

Si eso no funciona, intente especificar las columnas reales para las que se generan los valores:

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