この情報を取得するために照会できるテーブルが 2 つあります:INFORMATION_SCHEMA.TABLE_CONSTRAINTS
と INFORMATION_SCHEMA.KEY_COLUMN_USAGE
.
上にリンクされている後者のページのコメントからのクエリを次に示します。これは、求める情報を取得する方法を示しています。
SELECT CONCAT( table_name, '.', column_name, ' -> ',
referenced_table_name, '.', referenced_column_name ) AS list_of_fks
FROM INFORMATION_SCHEMA.key_column_usage
WHERE referenced_table_schema = 'test'
AND referenced_table_name IS NOT NULL
ORDER BY table_name, column_name;
「test
」の代わりにスキーマ名を使用してください
ここでは、@bill ソリューションを少し改善しています:
SELECT CONSTRAINT_SCHEMA AS db,
CONCAT (
TABLE_NAME,
'.',
COLUMN_NAME,
' -> ',
REFERENCED_TABLE_NAME,
'.',
REFERENCED_COLUMN_NAME
) AS relationship
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE REFERENCED_TABLE_NAME = 'your_table_name'
ORDER BY CONSTRAINT_SCHEMA,
TABLE_NAME,
COLUMN_NAME;
この場合、「your_table_name」フィールドとの関係でフィルタリングし、その関係がどのデータベースからのものかを確認していました.
INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
を試してください