Ansicht TABLE_CONSTRAINTS

Die Ansicht TABLE_CONSTRAINTS enthält die Primär- und Fremdschlüsselbeziehungen in einem BigQuery-Dataset.

Erforderliche Berechtigungen

Sie benötigen die folgenden IAM-Berechtigungen (Identity and Access Management):

  • bigquery.tables.get zum Aufrufen von Definitionen des primären und Fremdschlüssels.
  • bigquery.tables.list zum Aufrufen von Tabelleninformationsschemas

Jede der folgenden vordefinierten Rollen hat die erforderlichen Berechtigungen zum Ausführen der in diesem Dokument beschriebenen Workflows:

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

Weitere Informationen zu IAM-Rollen und Berechtigungen in BigQuery finden Sie unter Vordefinierte Rollen und Berechtigungen.

Schema

Die Ansicht INFORMATION_SCHEMA.TABLE_CONSTRAINTS hat das folgende Schema:

Spaltenname Typ Bedeutung

constraint_catalog

STRING

Der Name des Einschränkungsprojekts.

constraint_schema

STRING

Der Name des Einschränkungs-Datasets.

constraint_name

STRING

Der Name der Einschränkung.

table_catalog

STRING

Der Name des eingeschränkten Tabellenprojekts.

table_schema

STRING

Der Name des eingeschränkten Tabellen-Datasets.

table_name

STRING

Der Name der eingeschränkten Tabelle.

constraint_type

STRING

PRIMARY KEY oder FOREIGN KEY.

is_deferrable

STRING

YES oder NO, je nachdem, ob eine Einschränkung zurückgestellt werden kann. Nur NO wird unterstützt.

initially_deferred

STRING

Nur NO wird unterstützt.

enforced

STRING

YES oder NO, je nachdem, ob die Einschränkung erzwungen wird.
Nur NO wird unterstützt.

Aus Stabilitätsgründen empfehlen wir, Spalten in Ihren Informationsschema-Abfragen explizit aufzulisten, anstatt ein Platzhalterzeichen (SELECT *) zu verwenden. So wird verhindert, dass Abfragen fehlschlagen, wenn sich das zugrunde liegende Schema ändert.

Bereich und Syntax

Für Abfragen dieser Ansicht muss ein Dataset-Qualifizierer verwendet werden. Für Abfragen mit einem Dataset-Qualifier benötigen Sie Berechtigungen für das Dataset. Weitere Informationen finden Sie unter Syntax. In der folgenden Tabelle werden die Regions- und Ressourcenbereiche für diese Ansicht gezeigt:

Ansichtsname Ressourcenbereich Regionsbereich
[PROJECT_ID.]DATASET.INFORMATION_SCHEMA.TABLE_CONSTRAINTS; Dataset-Ebene Dataset-Speicherort
Dabei gilt:
  • Optional: PROJECT_ID: die ID Ihres Google Cloud -Projekts. Wenn keine Angabe erfolgt, wird das Standardprojekt verwendet.

Beispiele

Die folgende Abfrage zeigt die Einschränkungen für eine einzelne Tabelle in einem Dataset:

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

Ersetzen Sie dabei Folgendes:

  • PROJECT_ID: Optional. Der Name Ihres Cloud-Projekts. Wenn nicht angegeben, verwendet dieser Befehl das Standardprojekt.
  • DATASET: der Name Ihres Datasets
  • TABLE: der Name der Tabelle

Umgekehrt werden in der folgenden Abfrage die Einschränkungen für alle Tabellen in einem einzelnen Dataset angezeigt.

SELECT *
FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.TABLE_CONSTRAINTS;

Bei vorhandenen Einschränkungen sehen die Abfrageergebnisse etwa so aus:

+-----+---------------------+-------------------+-----------------------+---------------------+--------------+------------+-----------------+---------------+--------------------+----------+
| 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       |
+-----+---------------------+-------------------+-----------------------+---------------------+--------------+------------+-----------------+---------------+--------------------+----------+

Wenn für die Tabelle oder das Dataset keine Einschränkungen gelten, sehen die Abfrageergebnisse so aus:

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