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

Henter serie-id fra batch-indsatte rækker i postgresql

Noget som dette burde virke:

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

Jeg tror (jeg er ikke). sikker!), at nøglerne returneres i den rækkefølge, de blev genereret. Så den første række fra ResultSet'et skal knyttes til det første "element" fra den liste, du behandler. Men bekræft det!

Rediger

Hvis det ikke virker, så prøv at angive de faktiske kolonner, som værdierne genereres for:

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



  1. MySQL bedste N-resultater med Join-tabeller

  2. Giv en msdb-brugeradgang til en databasemailprofil i SQL Server (T-SQL)

  3. Rengør input til en kolonne i postgres

  4. Hvorfor blokerer SQL Server 2008 SELECT'er på INSERT'er med lange transaktioner?