2017-10-19 11 views
3

J'ai créé un diagramme DB et un diagramme EER dans MySQL Workbench. J'utilise la fonction de script Workbench pour écrire un script afin de générer du code pour utiliser la base de données après qu'elle a été exportée et créée sur un serveur MySQL. Comme je boucle sur les tables, est-il possible de trouver des clés étrangères liées à la table en cours?Comment trouver des clés étrangères lors de l'écriture de scripts MySQL Workbench

Il existe un attribut 'foreignKeys' sur l'objet table, mais il contient uniquement les clés étrangères pointant vers l'extérieur de la table, et non celles pointant dessus. Je veux savoir quelles autres tables ont des clés étrangères qui se lient à la clé primaire de la table actuelle (idéalement sans boucler toutes les colonnes de toutes les autres tables du modèle).

Répondre

3

Vous pouvez utiliser ci-dessous requête pour récupérer toute la contrainte/clé étrangère dans DB ..

SELECT 
    TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME 
FROM 
    INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
WHERE 
    REFERENCED_TABLE_SCHEMA = 'database_name'; 

pour être plus précis à votre question, vous pouvez utiliser ci-dessous .. requête

SELECT 
    TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME 
FROM 
    INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
WHERE 
    REFERENCED_TABLE_SCHEMA = 'database_name' AND 
    REFERENCED_TABLE_NAME = 'table_name'; 
+0

I ne vois pas comment je peux l'exécuter dans MySQL Workbench sur un modèle à partir duquel aucune base de données n'a été créée. Est-ce possible? –

+0

Jusqu'à présent, il n'y a pas de fonctionnalités pour lister les FK du diagramme EER. Je pense que ci-dessus SQL est la solution la plus rapide pour obtenir l'information que vous voulez, mais vous devez créer la table 1er dans le schéma temporaire. – Sh4m

+1

Merci d'avoir répondu. Ce n'était pas la réponse que je voulais. :) Mais c'est précis et vous avez fourni la meilleure chose suivante à ce que je voulais. –