• ベストアンサー

外部キー、親を調べるにはshow create table、子を調べるには?

外部キー制約で、参照先を調べるにはshow create tableで、 調べることが出来ると思います。 では、親テーブルが、どこから参照されているか(参照元)を調べるには どうすればいいですか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

MySQLのバージョンは、何ですか? MySQL 5.0から、information_schema(※)が実装されています。 MySQL 5.1には、さらに外部キー制約を管理する表追加されています。 これらをSQLでうまく検索すれば、容易に相手の表を調べられると思います。 http://dev.mysql.com/doc/refman/5.0/en/information-schema.html http://dev.mysql.com/doc/refman/5.1/ja/information-schema.html ※表や列、インデクスの定義情報などは、各RDBMSにより独自方式で管理され、カタログ、ディクショナリなどの名前で呼ばれています。 標準SQLで、これらを共通の方式で参照できるように規定されたのが、information_schemaです。表名などを管理するtables表、列名だどを管理するcolumns表などがあります。 ただ、「データベース」などの意味合いが各RDBMSにより異なっていたりするので、同じ列に入っている情報が少し異なっていたり、拡張仕様として列や表が追加されている場合が殆どです。

sweepea
質問者

お礼

ご回答ありがとうございます。 REFERENTIAL_CONSTRAINTS.REFERENCED_TABLE_NAMEがそれらしいですね。 ありがとうございました! ※今、手元にあるのが5.0なので、中は確認できませんが。。

その他の回答 (1)

回答No.2

>手元にあるのが5.0なので information_schema.key_column_usage表を、確認してみましょう。 REFERENCED_TABLE_NAME列が参照先の表名なので、親の表名で検索してみてください。 http://dev.mysql.com/doc/refman/5.0/en/key-column-usage-table.html

sweepea
質問者

お礼

5.1で確認しました。 ありがとうございました。

関連するQ&A