TABLE_CONSTRAINTS 檢視

TABLE_CONSTRAINTS 檢視包含 BigQuery 資料集中的主鍵和外鍵關聯。

所需權限

您必須具備下列 身分與存取權管理 (IAM) 權限

  • bigquery.tables.get,查看主鍵和外鍵定義。
  • bigquery.tables.list:查看資料表資訊結構定義。

下列每個預先定義的角色都具備執行本文所述工作流程所需的權限:

  • roles/bigquery.dataEditor
  • roles/bigquery.dataOwner
  • roles/bigquery.admin

如要進一步瞭解 BigQuery 中的 IAM 角色和權限,請參閱「預先定義的角色與權限」一文。

結構定義

INFORMATION_SCHEMA.TABLE_CONSTRAINTS 檢視表具有下列結構定義:

資料欄名稱 類型 意義

CONSTRAINT_CATALOG

STRING

限制專案名稱。

CONSTRAINT_SCHEMA

STRING

限制資料集名稱。

CONSTRAINT_NAME

STRING

限制名稱。

TABLE_CATALOG

STRING

受限資料表專案名稱。

TABLE_SCHEMA

STRING

受限資料表資料集名稱。

TABLE_NAME

STRING

受限的資料表名稱。

CONSTRAINT_TYPE

STRING

PRIMARY KEYFOREIGN KEY

IS_DEFERRABLE

STRING

YESNO,視限制是否可延後而定。系統僅支援 NO

INITIALLY_DEFERRED

STRING

系統僅支援 NO

ENFORCED

STRING

YESNO,視限制是否已強制執行而定。
僅支援 NO

範圍和語法

對這個檢視表執行的查詢必須包含資料集限定詞。如果查詢含有資料集限定詞,您必須具備資料集的權限。詳情請參閱「語法」。下表列出這個檢視畫面的區域和資源範圍:

檢視表名稱 資源範圍 區域範圍
[PROJECT_ID.]DATASET.INFORMATION_SCHEMA.TABLE_CONSTRAINTS; 資料集層級 資料集位置
替換下列內容:
  • 選用:PROJECT_ID: Google Cloud 專案的 ID。如果未指定,系統會使用預設專案。

範例

以下查詢會顯示資料集中單一資料表的限制:

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

更改下列內容:

  • PROJECT_ID:選用。雲端專案的名稱。如果未指定,這個指令會使用預設專案。
  • DATASET:資料集名稱。
  • TABLE:資料表名稱。

相反地,下列查詢會顯示單一資料集中所有資料表的限制條件。

SELECT *
FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.TABLE_CONSTRAINTS;

在使用現有限制的情況下,查詢結果會類似下列內容:

+-----+---------------------+-------------------+-----------------------+---------------------+--------------+------------+-----------------+---------------+--------------------+----------+
| Row | constraint_catalog  | constraint_schema |    constraint_name    |    table_catalog    | table_schema | table_name | constraint_type | is_deferrable | initially_deferred | enforced |
+-----+---------------------+-------------------+-----------------------+---------------------+--------------+------------+-----------------+---------------+--------------------+----------+
|   1 | myConstraintCatalog | myDataset         | orders.pk$            | myConstraintCatalog | myDataset    | orders     | PRIMARY KEY     | NO            | NO                 | NO       |
|   2 | myConstraintCatalog | myDataset         | orders.order_customer | myConstraintCatalog | myDataset    | orders     | FOREIGN KEY     | NO            | NO                 | NO       |
+-----+---------------------+-------------------+-----------------------+---------------------+--------------+------------+-----------------+---------------+--------------------+----------+

如果資料表或資料集沒有限制條件,查詢結果會如下所示:

+-----------------------------+
| There is no data to display |
+-----------------------------+