PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Uzyskaj wszystkie klucze obce za pomocą JDBC

Nawet jeśli pętla while iteruje po całym ResultSet , funkcja zwróci tylko ostatnią kolumnę w ograniczeniu FK, ponieważ w każdej iteracji nadpisujesz wartość poprzedniej iteracji (fkTableData = rs.getString(i); ). Btw:`fkTableData powinna właściwie być zmienną lokalną metody, a nie zmienną instancji.

Twoja funkcja powinna zwrócić List<String> nie String .

Dodatkowo:wywołujesz getImportedKeys() raz na każdą kolumnę w zestawie wyników. To jest wyjątkowo nieefektywne. Gdybyś używał Oracle, zauważyłbyś to natychmiast, ponieważ pobieranie informacji FK jest tam bardzo wolne (Postgres jest znacznie szybszy podczas uzyskiwania dostępu do katalogów systemowych).

Jako getImportedKeys() zwraca jeden wiersz dla każdej kolumny FK musisz również zebrać wszystkie wiersze należące do jednej definicji ograniczenia (tj. dla jednej kombinacji tabeli nadrzędnej/podrzędnej).

Prawdopodobnie najlepiej byłoby zdefiniować klasę PkDefinition który przechowuje wszystkie zaangażowane kolumny i nazwy tabel, których to dotyczy, a funkcja zwraca List<PkDefinition> aby uniknąć wielu wywołań dla tego samego wiersza zestawu wyników.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Korzystanie ze źródła Postgresql JDBC z Apache Spark na EMR

  2. PG gem nie instaluje się w aplikacji Rails:Gem::Ext::BuildError:BŁĄD:Nie udało się zbudować natywnego rozszerzenia gem

  3. Aktualizowanie kolumny typu integer z elementu jsonb kończy się niepowodzeniem:kolumna jest typu integer, ale wyrażenie jest typu jsonb

  4. Odległość PostgreSQL między 2 punktami przechowywanymi w tabeli

  5. Import PostgreSQL CSV z wiersza poleceń