Ich habe eine Tabelle, deren Primärschlüssel in mehreren anderen Tabellen als Fremdschlüssel referenziert wird. Beispielsweise:
CREATE TABLE `X` (
`X_id` int NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`X_id`)
)
CREATE TABLE `Y` (
`Y_id` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`X_id` int DEFAULT NULL,
PRIMARY KEY (`Y_id`),
CONSTRAINT `Y_X` FOREIGN KEY (`X_id`) REFERENCES `X` (`X_id`)
)
CREATE TABLE `Z` (
`Z_id` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`X_id` int DEFAULT NULL,
PRIMARY KEY (`Z_id`),
CONSTRAINT `Z_X` FOREIGN KEY (`X_id`) REFERENCES `X` (`X_id`)
)
Jetzt weiß ich nicht, wie viele Tabellen in der Datenbank Fremdschlüssel in X enthalten, wie die Tabellen Y und Z. Gibt es eine SQL-Abfrage, mit der ich Folgendes zurückgeben kann:
- Eine Liste von Tabellen mit Fremdschlüsseln in X.
- UND welche dieser Tabellen haben tatsächlich Werte im Fremdschlüssel
mysql
foreign-keys
Mel
quelle
quelle
MySQL 5.5 Referenzhandbuch: "InnoDB- und FOREIGN KEY-Einschränkungen"
quelle
Diese Lösung zeigt nicht nur alle Relationen an, sondern auch den in einigen Fällen erforderlichen Einschränkungsnamen (z. B. Drop-Einschränkung):
Wenn Sie Tabellen in einer bestimmten Datenbank überprüfen möchten, fügen Sie Folgendes hinzu:
quelle
Sie finden alle schemabezogenen Informationen in der weise benannten
information_schema
Tabelle.Vielleicht möchten Sie die Tabelle
REFERENTIAL_CONSTRAINTS
und überprüfenKEY_COLUMN_USAGE
. Ersteres sagt Ihnen, auf welche Tabellen andere verweisen. Letzteres zeigt Ihnen, wie ihre Felder zusammenhängen.quelle
Auflistung aller Fremdschlüssel in einer Datenbank einschließlich Beschreibung
Beschränkung auf eine bestimmte Spalte in einer Tabellentabelle
quelle
Ich habe einen kleinen Bash-Onliner geschrieben , den Sie in ein Skript schreiben können, um eine benutzerfreundliche Ausgabe zu erhalten:
mysql_references_to:
Die Ausführung:
mysql_references_to transaccion
(wobei transaccion ein zufälliger Tabellenname ist) ergibt eine Ausgabe wie folgt :quelle
Am einfachsten:
1. Öffnen Sie phpMyAdmin.
2. Klicken Sie mit der linken Maustaste auf den Datenbanknamen.
3. Suchen Sie in der oberen rechten Ecke die Registerkarte "Designer"
Dort werden alle Einschränkungen angezeigt.
quelle