KEY_COLUMN_USAGE ビュー

KEY_COLUMN_USAGE ビューには、PRIMARY KEY 制約と FOREIGN KEY 制約によってキーとして制約されている TABLE_CONSTRAINTS のテーブルの列が含まれます。

スキーマ

INFORMATION_SCHEMA.KEY_COLUMN_USAGE ビューのスキーマは次のとおりです。

列名 データ型

CONSTRAINT_CATALOG

STRING

制約プロジェクト名。

CONSTRAINT_SCHEMA

STRING

制約データセット名。

CONSTRAINT_NAME

STRING

制約名。

TABLE_CATALOG

STRING

制約付きテーブルのプロジェクト名。

TABLE_SCHEMA

STRING

制約付きテーブルのデータセットの名前。

TABLE_NAME

STRING

制約付きテーブルの名前。

COLUMN_NAME

STRING

制約された列の名前。

ORDINAL_POSITION

INT64

制約キー内の列の順序位置(1 から開始)。

POSITION_IN_UNIQUE_CONSTRAINT

INT64

外部キーの場合、主キー制約内の列の順序位置(1 から開始)。主キーの制約の場合、この値は NULL です。

スコープと構文

このビューに対するクエリでは、データセット修飾子を指定する必要があります。データセット修飾子が指定されたクエリの場合は、データセットに対する権限が必要です。詳細については、構文をご覧ください。次の表に、このビューのリージョン スコープとリソース スコープを示します。

ビュー名 リソース スコープ リージョン スコープ
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.KEY_COLUMN_USAGE; データセット レベル データセットの場所
次のように置き換えます。

  • 省略可: PROJECT_ID: Google Cloud プロジェクトの ID。指定しない場合は、デフォルトのプロジェクトが使用されます。

    データセット修飾子が指定されたクエリの場合は、データセットに対する権限が必要です。リージョン修飾子が指定されたクエリの場合は、プロジェクトに対する権限が必要です。

    例 1:

    次のクエリは、データセット内の単一テーブルの制約を示します。

    SELECT *
    FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.KEY_COLUMN_USAGE
    WHERE table_name = TABLE;

    以下を置き換えます。

    • PROJECT_ID: 省略可。クラウド プロジェクトの名前。指定しない場合、このコマンドではデフォルトのプロジェクトが使用されます。
    • DATASET: データセットの名前。
    • TABLE: テーブルの名前。

    次のクエリは逆に、単一データセット内のすべてのテーブルに関し、キー列の使用状況を示します。

    SELECT *
    FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.KEY_COLUMN_USAGE;

    テーブルまたはデータセットに制約がない場合、クエリ結果は次のようになります。

    +-----------------------------+
    | There is no data to display |
    +-----------------------------+
    
    例 2:

    次の DDL ステートメントは、主キーテーブルと外部キーテーブルを作成します。

    CREATE TABLE composite_pk (x int64, y string, primary key (x, y) NOT ENFORCED);
    CREATE TABLE table composite_fk (x int64, y string, z string,  primary key (x, y)
    NOT ENFORCED, CONSTRAINT composite_fk foreign key (z, x)
    REFERENCES composite_pk (y, x) NOT ENFORCED);

    例 1 のステートメントでクエリを行うと、クエリ結果は次のようになります。CONSTRAINT_CATALOG 列、CONSTRAINT_SCHEMA 列、重複列は、この例の結果には含まれません。

    +---------------------------+--------------+-------------+------------------+-------------------------------+
    |     CONSTRAINT_NAME       |  TABLE_NAME  | COLUMN_NAME | ORDINAL_POSITION | POSITION_IN_UNIQUE_CONSTRAINT |
    +---------------------------+--------------+-------------+------------------+-------------------------------+
    | composite_pk.pk$          | composite_pk | x           | 1                | NULL                          |
    | composite_pk.pk$          | composite_pk | y           | 2                | NULL                          |
    | composite_fk.pk$          | composite_fk | x           | 1                | NULL                          |
    | composite_fk.pk$          | composite_fk | y           | 2                | NULL                          |
    | composite_fk.composite_fk | composite_fk | z           | 1                | 2                             |
    | composite_fk.composite_fk | composite_fk | x           | 2                | 1                             |
    +---------------------------+--------------+-------------+------------------+-------------------------------+