KEY_COLUMN_USAGE ビュー
KEY_COLUMN_USAGE
ビューには、PRIMARY KEY
制約と FOREIGN KEY
制約によってキーとして制約されている TABLE_CONSTRAINTS
のテーブルの列が含まれます。
スキーマ
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
ビューのスキーマは次のとおりです。
列名 | データ型 | 値 |
---|---|---|
|
|
制約プロジェクト名。 |
|
|
制約データセット名。 |
|
|
制約名。 |
|
|
制約付きテーブルのプロジェクト名。 |
|
|
制約付きテーブルのデータセットの名前。 |
|
|
制約付きテーブルの名前。 |
|
|
制約された列の名前。 |
|
|
制約キー内の列の順序位置(1 から開始)。 |
|
|
外部キーの場合、主キー制約内の列の順序位置(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 | +---------------------------+--------------+-------------+------------------+-------------------------------+