PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Recupero dell'ID seriale dalle righe inserite in batch in postgresql

Qualcosa del genere dovrebbe funzionare:

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

Penso (io non certo!) che le chiavi vengano restituite nell'ordine in cui sono state generate. Quindi la prima riga del ResultSet dovrebbe essere mappata al primo "elemento" dall'elenco che stai elaborando. Ma verificalo!

Modifica

Se non funziona, prova a specificare le colonne effettive per le quali vengono generati i valori:

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