PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Abrufen der Seriennummer aus stapelweise eingefügten Zeilen in Postgresql

So etwas sollte funktionieren:

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

Ich denke (ich bin nicht sicher!), dass die Schlüssel in der Reihenfolge zurückgegeben werden, in der sie generiert wurden. Die erste Zeile aus dem ResultSet sollte also dem ersten "Element" aus der Liste zugeordnet werden, die Sie verarbeiten. Aber überprüfen Sie das!

Bearbeiten

Wenn das nicht funktioniert, versuchen Sie, die tatsächlichen Spalten anzugeben, für die die Werte generiert werden:

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