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

為確保穩定性,建議您在資訊結構定義查詢中明確列出資料欄,而非使用萬用字元 (SELECT *)。明確列出資料欄可避免基礎結構定義變更時,查詢中斷。

範圍和語法

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

檢視表名稱 資源範圍 區域範圍
[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 |
+-----------------------------+