So finden Sie Tabellen mit Fremdschlüssel zu einer Tabelle in Oracle?
Plane ich Daten aus einer Tabelle löschen, würde ich gerne wissen, wie viele und welche Tabellen ein Fremdschlüssel Verweis auf diese bestimmte Tabelle in Oracle. Als ich dann die Fremdschlüssel auf null. Ich würde gerne wissen Liste von allen Tabellen, die einen Fremdschlüssel zu dieser bestimmten Tabelle.
mögliche Duplikate von Oracle foreign key references
möglich, Duplikat der Wie kann ich herausfinden, welche Tabellen-Referenz in einer Tabelle in Oracle SQL Developer?
möglich, Duplikat der Wie kann ich herausfinden, welche Tabellen-Referenz in einer Tabelle in Oracle SQL Developer?
InformationsquelleAutor Walker | 2010-09-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
"Referencing Constraint Name"
, als das ist der name der integritätsregel, die auf die primäre Einschränkung, nicht die andere Weise herum.InformationsquelleAutor kupa
Habe ich eine situation, wo der Tisch, an dem ich interessiert bin nicht im Besitz der schema-ich war anschließen. So musste ich die Abfrage ändern in der derzeit akzeptierte Antwort zu verwenden
ALL_CONSTRAINTS
stattUSER_CONSTRAINTS
. Dabei habe ich einen Fehler gemacht, und ich fand die Antwort akzeptiert zu werden, sehr schwer zu Lesen, so dass ich es beheben könnte. (Das fehlen der Erklärung nicht helfen.) Als Ergebnis, landete ich kommen mit meiner eigenen Abfrage. Es ist im Grunde das gleiche, aber ich denke, es ist ein bisschen einfacher zu verstehen.FK.CONSTRAINT_TYPE = 'R'
Filter nach untenFK
zu einer Reihe von foreign key-Einschränkungen, und die join-Paare dieser foreign-keys mit Ihrer "Referenziert constraint". (Die betroffene Einschränkung ist in der Regel der Primärschlüssel der "übergeordneten" Tabelle.) Endlich, wir filtern bis zu der übergeordneten Tabelle sind wir daran interessiert, mitSRC.OWNER = 'MY_SCHEMA' AND SRC.TABLE_NAME = 'MY_TABLE'
.Natürlich können Sie diesen Schalter verwenden
USER_CONSTRAINTS
wenn Sie möchten, entfernen Sie einfach dieSRC.OWNER
überprüfen und dieOWNER
Präfixe in derSELECT
.Würde die downvoter Pflege zu erklären?
Wahrscheinlich nicht genau, wie
FK.R_CONSTRAINT_NAME
ist wahrscheinlichNULL
für Zeilen, die mit anderen Arten. Auf der anderen Seite, es tut nicht weh, nichts.InformationsquelleAutor jpmc26
Folgenden Abfrage geben Sie alle foreign key-Einschränkungen definiert TABLE_NAME:
baseTable.constraint_type = 'R'
?'R' steht für die Referenzielle Integrität, und wir wollen nur überprüfen foreign key-Einschränkung hier. So baseTable.constraint_type = 'R' verwendet werden sollte. constraint_type kann auch andere Werte möglich, die Sie hier überprüfen können -> docs.oracle.com/cd/B19306_01/server.102/b14237/...
Diese Abfrage wird pick-up auf alle Tabellen, die Namen unabhängig von schema. Wenn mehrere Tabellen in verschiedenen Schemata, die den gleichen Namen haben, wird es abholen alle von Ihnen. Was noch schlimmer ist, dass Ihre Wahl der
SELECT
ed Spalten macht es unmöglich zu sagen, die - Tabelle verwiesen wird, wenn es tut, finden Sie mehrere Dateien.Auch in diesem Fall können Sie einfach fügen Sie eine filter-Klausel, die auf schema -, das ist es. Man hat zu Schneider-Abfragen entsprechend Ihren eigenen Bedürfnissen, einfach.
Außer, dass, wenn Sie die filter, es würde 1. Verhalten, als man eigentlich erwarten würde, und 2. identisch sein, um bereits vorhandene Antworten. "Sie können es zu beheben selbst," ist nicht eine Verteidigung für das it-Verhalten in wenig hilfreicher Weise.
InformationsquelleAutor nanosoft
Wenn Sie auch die Felder enthalten sein:
InformationsquelleAutor Vlisisids Akis
Gibt es keine Notwendigkeit, diesen Schritt zu tun manuell - können Sie einfach eine cascading delete.
InformationsquelleAutor Gaius
InformationsquelleAutor ALIRA
Vielleicht habe ich was falsch verstanden Walker gefragt, aber was ich verstanden habe ist : Wie finden Sie Tabellen, die einen Fremdschlüssel Verweis auf eine bestimmte Tabelle (z.B. MITARBEITER).
Wenn ich versuche Kupa Antwort :
Bekomme ich die Tabellen, auf denen die MITARBEITER haben eine foreign-key-Referenz zu.
MITARBEITER.foreign_key => TABELLEN.primary_key
Sehen Sie unten die aktualisierten sql, die zum abrufen der Tabellen, die einen Fremdschlüssel Verweis auf MITARBEITER.
TABELLEN.foreign_key => MITARBEITER.primary_key
InformationsquelleAutor Dgeyzonne
InformationsquelleAutor nik