Ich suche nach einer Abfrage, mit der Fremdschlüsselinformationen (jede Zeile: referenzierende Tabelle und Feld, referenzierte Tabelle und Feld) eines gesamten Schemas abgerufen werden können.
Ich habe dies gefunden, gebe aber nicht alle Informationen an, die ich benötige: /programming/4389228/sql-for-oracle-to-check-if-a-constraint-exists
Ich arbeite gerade daran und werde möglicherweise in den nächsten Minuten / Stunden eine Lösung finden. Aber wenn jemand bereits eine voll funktionsfähige Lösung hat, werde ich es gerne wissen :)
oracle
query
foreign-key
Frosty Z.
quelle
quelle
Antworten:
Nach einigen „Reverse-Engineering“ auf den Abfragen durch das gemacht Navicat Werkzeug , wenn die Öffnung Design Tisch Fenster für eine Tabelle (Abfragen Informationen über Fremdschlüssel zeigen sich im Beschaffungs Geschichte Fenster), hier eine Lösung:
quelle
SQL Developer wird mit einem Bericht geliefert, der genau dies tut.
Dies geschieht nur für das Anmeldeschema, aber es ist eine schnelle Lösung, um alle einzelnen FK in der Datenbank abzurufen - obwohl Sie möglicherweise Schemas wie "APEX ..." und "SYS" weglassen möchten.
Außerdem werden Dinge wie Tabellen im Papierkorb weggelassen.
Der ursprüngliche Bericht befindet sich im Bereich Berichte in den Datenwörterbuchberichten.
Hier ist die geänderte Abfrage, um ALLE FKs zu erhalten.
Und so sieht dieser Bericht aus.
quelle
Ein etwas komplizierter Code, der auch Kommentare zu Spalten abgibt (basierend auf Frosty-Code):
Um die Ausgabe besser lesbar zu machen, verwende ich
break on TABLE_NAME;
insqlplus
(siehe meine Frage /programming/14998296/print-only-first-unique-value-for-column-that-order-by-in-oracle-sqlplus / ).UPDATE Einfachere Abfrage, die eine Liste von Tabellen sammelt, die einen FK-Verweis auf eine bestimmte Tabelle haben (nützlich, wenn Sie Einschränkungen nach dem Umbenennen von Tabellen bereinigen möchten):
quelle