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

Dapatkan semua kunci asing menggunakan JDBC

Meskipun loop while Anda mengulangi seluruh ResultSet , fungsi hanya akan mengembalikan kolom terakhir dalam batasan FK karena pada setiap iterasi Anda menimpa nilai dari iterasi sebelumnya (fkTableData = rs.getString(i); ). Btw:`fkTableData seharusnya merupakan variabel lokal untuk metode, bukan variabel instan.

Fungsi Anda harus mengembalikan List<String> bukan String .

Selain itu:Anda memanggil getImportedKeys() sekali untuk setiap kolom di ResultSet. Itu sangat tidak efisien. Jika Anda menggunakan Oracle, Anda akan segera menyadarinya karena pengambilan informasi FK sangat lambat di sana (Postgres jauh lebih cepat saat mengakses katalog sistem).

Sebagai getImportedKeys() mengembalikan satu baris untuk setiap FK kolom anda juga perlu mengumpulkan semua baris yang termasuk dalam satu definisi batasan tunggal (yaitu untuk satu kombinasi tabel induk/anak).

Mungkin yang terbaik adalah mendefinisikan kelas PkDefinition yang menyimpan semua kolom yang terlibat dan nama tabel yang terlibat dan membuat fungsi Anda mengembalikan List<PkDefinition> untuk menghindari beberapa panggilan untuk baris kumpulan hasil yang sama.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TypeError:create() mendapat beberapa nilai untuk argumen kata kunci 'konteks'

  2. Jumlah total 1 dalam bitmask Postgres

  3. instal paket dari docker-compose.yml ke dalam wadah buruh pelabuhan

  4. Nama tabel dinamis kueri SQL di FOR

  5. Flask-Migrate tidak mendeteksi tabel