PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Mengambil id serial dari baris yang disisipkan batch di postgresql

Sesuatu seperti ini seharusnya bekerja:

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

Saya pikir (saya tidak yakin!) bahwa kunci dikembalikan sesuai urutan pembuatannya. Jadi baris pertama dari ResultSet harus dipetakan ke "item" pertama dari daftar yang sedang Anda proses. Tapi pastikan itu!

Sunting

Jika tidak berhasil, coba tentukan kolom sebenarnya yang menghasilkan nilai:

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesalahan PostGIS:Tidak dapat memilih fungsi kandidat terbaik

  2. kesalahan hibernasi:Tidak ada kunci utama untuk tabel yang direferensikan

  3. Setara dengan fungsi FOUND_ROWS() di Postgresql

  4. Agregat PostgreSQL dengan Banyak Parameter

  5. Postgres menyetel komit otomatis secara global