PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Recuperando o id serial de linhas inseridas em lote no postgresql


Algo assim deve 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 
}

Eu acho (eu não certeza!) que as chaves são retornadas na ordem em que foram geradas. Portanto, a primeira linha do ResultSet deve mapear para o primeiro "item" da lista que você está processando. Mas verifique isso!

Editar

Se isso não funcionar, tente especificar as colunas reais para as quais os valores são gerados:
stmt =  c.prepareStatement("INSERT ... ", new String[] {"id"});