Szukam zapytania umożliwiającego pobranie informacji o kluczu obcym (każda linia: tabela i pole referencyjne, tabela i pole referencyjne) całego schematu.
Znalazłem to, ale nie zawiera wszystkich potrzebnych informacji: /programming/4389228/sql-for-oracle-to-check-if-a-constraint-exists
Obecnie pracuję nad tym i może skończyć się rozwiązaniem w ciągu najbliższych minut / godzin. Ale jeśli ktoś ma już w pełni działające rozwiązanie, chętnie się o tym dowiem :)
oracle
query
foreign-key
Frosty Z
źródło
źródło
Odpowiedzi:
Po „ponownej inżynierii” zapytań utworzonych przez narzędzie Navicat podczas otwierania okna tabeli projektu dla tabeli (zapytania o informacje dotyczące kluczy obcych pojawiają się w oknie historii ), oto rozwiązanie:
źródło
SQL Developer dostarcza raport, który właśnie to robi.
Robi to tylko dla schematu logowania, ale jest to szybka poprawka, aby uzyskać dostęp do każdego FK w bazie danych - chociaż możesz chcieć pominąć schematy takie jak „APEX ...” i „SYS”.
Pomija także rzeczy takie jak tabele w koszu.
Oryginalny raport znajduje się w panelu Raporty, w raportach słownika danych.
Oto poprawione zapytanie, aby uzyskać WSZYSTKIE FK.
A oto jak wygląda ten raport.
źródło
Trochę skomplikowany kod, który również zrzuca komentarze do cols (na podstawie kodu Frosty):
Aby wynik był bardziej czytelny, używam
break on TABLE_NAME;
wsqlplus
(spójrz na moje pytanie /programming/14998296/print-only-first-unique-value-for-column-that-order-by-in-oracle-sqlplus / ).AKTUALIZACJA Prostsze zapytanie, które zbiera listę tabel, które mają odniesienie FK do podanej tabeli (przydatne, jeśli chcesz wyczyścić ograniczenia po zmianie nazw tabel):
źródło