ホームページ > データベース > mysql チュートリアル > 特定の列を参照する外部キーを持つテーブルを検索するにはどうすればよいですか?

特定の列を参照する外部キーを持つテーブルを検索するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-16 10:19:10
オリジナル
414 人が閲覧しました

How to Find Tables with Foreign Keys Referencing a Specific Column?

特定の列を参照する外部キーを持つテーブルの検索

リレーショナル データベースでは、テーブルに他の列を参照する外部キーがあるのが一般的です。テーブルの主キー。これにより、エンティティ間の関係を確立し、強制することができます。ただし、特定の列を参照する外部キーを持つテーブルを特定するのは難しい場合があります。

この課題に対処するために、指定されたテーブルの列を参照する外部キーを持ち、実際の値が含まれるテーブルを識別する方法を説明します。

次のデータベース スキーマの例を考えてみましょう:

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`)
);
ログイン後にコピー

このスキーマでは、両方のテーブルがY と Z にはテーブル X の X_id 列を参照する外部キーがあります。そのようなテーブルのリストを取得し、どのテーブルが外部キーに値を持っているかを特定するには:

SELECT *
FROM
  information_schema.KEY_COLUMN_USAGE
WHERE
  REFERENCED_TABLE_NAME = 'X'
  AND REFERENCED_COLUMN_NAME = 'X_id';
ログイン後にコピー

このクエリはすべてのテーブルに関する情報を返します。指定されたテーブルの列を参照する外部キーを持つもの。また、外部キーに少なくとも 1 つの関連付けられた値があることも保証されます。

結果を特定のデータベースにさらに絞り込むには、次の変更されたクエリを使用できます。

SELECT *
FROM
  information_schema.KEY_COLUMN_USAGE
WHERE
  REFERENCED_TABLE_NAME = 'X'
  AND REFERENCED_COLUMN_NAME = 'X_id'
  AND TABLE_SCHEMA = 'your_database_name';
ログイン後にコピー

ここでは、 your_database_name は、テーブルが存在する実際のデータベース名に置き換える必要があります。

以上が特定の列を参照する外部キーを持つテーブルを検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート