MySQL:外部キー関係をプログラムで決定する方法は?

この情報を取得するために照会できるテーブルが 2 つあります:INFORMATION_SCHEMA.TABLE_CONSTRAINTSINFORMATION_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 を試してください