Wie erhalte ich in MySQL eine Liste aller Fremdschlüsseleinschränkungen, die auf eine bestimmte Tabelle verweisen? eine bestimmte Spalte? Dies ist dasselbe wie diese Oracle-Frage , jedoch für MySQL.
mysql
foreign-keys
innodb
Christian Oudard
quelle
quelle
where REFERENCED_TABLE_SCHEMA = 'mydatabase' and REFERENCED_TABLE_NAME = 'mytable'
BEARBEITEN: Wie in den Kommentaren erwähnt, ist dies nicht die richtige Antwort auf die Frage des OP, aber es ist nützlich, diesen Befehl zu kennen. Diese Frage tauchte in Google für das auf, wonach ich suchte, und dachte, ich würde diese Antwort den anderen überlassen, um sie zu finden.
Ich habe diese Antwort hier gefunden: MySQL: show Einschränkungen für Tabellenbefehl
Ich brauchte diesen Weg, weil ich sehen wollte, wie der FK funktioniert, anstatt nur zu sehen, ob er existiert oder nicht.
quelle
<yourtable>
, nicht alle Einschränkungen, auf die verwiesen wird<yourtable>
.display foreign keys mysql
in Google, vielleicht deshalb;)Wenn Sie InnoDB verwenden und FKs definieren, können Sie die Datenbank information_schema abfragen, z.
quelle
Veröffentlichen Sie eine alte Antwort, um einige nützliche Informationen hinzuzufügen.
Ich hatte ein ähnliches Problem, wollte aber auch CONSTRAINT_TYPE zusammen mit den Tabellen- und Spaltennamen REFERENCED sehen. Damit,
So zeigen Sie alle FKs in Ihrer Tabelle an:
So zeigen Sie alle Tabellen und FKs in Ihrem Schema an:
So zeigen Sie alle FKs in Ihrer Datenbank an:
Merken!
Dies verwendet die InnoDB-Speicher-Engine. Wenn nach dem Hinzufügen keine Fremdschlüssel angezeigt werden, liegt dies wahrscheinlich daran, dass Ihre Tabellen MyISAM verwenden.
Überprüfen:
Verwenden Sie zum Beheben Folgendes:
quelle
Wenn Sie als Alternative zur Antwort von Node InnoDB verwenden und FKs definieren, können Sie die Datenbank information_schema abfragen, z.
für Fremdschlüssel aus <Tabelle> oder
für Fremdschlüssel zu <Tabelle>
Sie können auch UPDATE_RULE und DELETE_RULE abrufen, wenn Sie dies möchten.
quelle
Diese Lösung zeigt nicht nur alle Beziehungen an, sondern auch den in einigen Fällen erforderlichen Einschränkungsnamen (z. B. Drop Contraint):
Wenn Sie Tabellen in einer bestimmten Datenbank überprüfen möchten, fügen Sie am Ende der Abfrage den Schemanamen hinzu:
Fügen Sie für einen bestimmten Spaltennamen ebenfalls hinzu
am Ende der Abfrage.
Inspiriert von diesem Beitrag hier
quelle
Die Verwendung von REFERENCED_TABLE_NAME funktioniert nicht immer und kann ein NULL-Wert sein. Die folgende Abfrage kann stattdessen funktionieren:
quelle
Eine schnelle Möglichkeit, Ihre FKs (Fremdschlüsselreferenzen) mithilfe von aufzulisten
Bei dieser Abfrage wird davon ausgegangen, dass sich die Einschränkungen und alle referenzierten und referenzierenden Tabellen im selben Schema befinden.
Fügen Sie Ihren eigenen Kommentar hinzu.
Quelle: das offizielle MySQL-Handbuch.
quelle
Die Lösung, die ich gefunden habe, ist fragil. Es basiert auf der Namenskonvention von Django für Fremdschlüssel.
Dann in der Schale,
quelle
So finden Sie alle Tabellen, die einen bestimmten Fremdschlüssel enthalten, z
employee_id
quelle
Wenn Sie auch den Namen der Fremdschlüsselspalte erhalten möchten:
quelle