Ansicht KEY_COLUMN_USAGE
Die KEY_COLUMN_USAGE Ansicht enthält Spalten der Tabellen aus
TABLE_CONSTRAINTS die als Schlüssel durch
Primär- und Fremdschlüssel Einschränkungen eingeschränkt sind.
Erforderliche Rollen
Um die Berechtigungen zu erhalten, die
Sie zum Abfragen der INFORMATION_SCHEMA.KEY_COLUMN_USAGE Ansicht benötigen,
müssen Sie Ihren Administrator bitten, Ihnen die
IAM-Rolle BigQuery-Datenbearbeiter (roles/bigquery.dataEditor) für Ihr Projekt zu gewähren.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierte Rolle enthält die Berechtigungen, die zum Abfragen der Ansicht INFORMATION_SCHEMA.KEY_COLUMN_USAGE erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Zum Abfragen der Ansicht INFORMATION_SCHEMA.KEY_COLUMN_USAGE sind die folgenden Berechtigungen erforderlich:
-
Definitionen von Primär- und Fremdschlüsseln ansehen:
bigquery.tables.get -
Tabelleninformationsschemas ansehen:
bigquery.tables.list
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Weitere Informationen zu IAM-Rollen und Berechtigungen in BigQuery finden Sie unter Vordefinierte Rollen und Berechtigungen.
Schema
Die Ansicht INFORMATION_SCHEMA.KEY_COLUMN_USAGE hat das folgende Schema:
| Spaltenname | Datentyp | Wert |
|---|---|---|
|
|
Der Name des Einschränkungsprojekts. |
|
|
Der Name des Einschränkungs-Datasets. |
|
|
Der Name der Einschränkung. |
|
|
Der Projektname der eingeschränkten Tabelle. |
|
|
Der Name des eingeschränkten Tabellen-Datasets. |
|
|
Der Name der eingeschränkten Tabelle. |
|
|
Der Name der eingeschränkten Spalte. |
|
|
Die ordinale Position der Spalte innerhalb des Einschränkungsschlüssels (beginnend mit 1). |
|
|
Bei Fremdschlüsseln die ordinale Position der Spalte innerhalb der Primärschlüsseleinschränkung (ab 1). Dieser Wert ist für Primärschlüsseleinschränkungen NULL. |
Aus Stabilitätsgründen empfehlen wir, Spalten in Ihren Informationsschemaabfragen explizit aufzulisten, anstatt ein Platzhalterzeichen (SELECT *) zu verwenden. Wenn Sie Spalten explizit auflisten, 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_ID.INFORMATION_SCHEMA.KEY_COLUMN_USAGE; |
Dataset-Ebene | Dataset-Speicherort |
-
Optional:
PROJECT_ID: die ID Ihres Google Cloud Projekts. Wenn keine Angabe erfolgt, wird das Standardprojekt verwendet.
Für Abfragen mit einem Dataset-Qualifier benötigen Sie Berechtigungen für das Dataset. Für Abfragen mit einem Regions-Qualifier müssen Sie Berechtigungen für das Projekt haben.
Beispiele
Beispiel 1:
Die folgende Abfrage zeigt die Einschränkungen für eine einzelne Tabelle in einem Dataset:
SELECT * FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.KEY_COLUMN_USAGE 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 DatasetsTABLE: der Name der Tabelle
Umgekehrt zeigt die folgende Abfrage die Nutzung der Schlüsselspalten für alle Tabellen in einem einzelnen Dataset.
SELECT * FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.KEY_COLUMN_USAGE;
Wenn für eine Tabelle oder ein Dataset keine Einschränkungen gelten, sehen die Abfrageergebnisse so aus:
+-----------------------------+ | There is no data to display | +-----------------------------+
Beispiel 2:
Mit den folgenden DDL-Anweisungen werden eine Primärschlüsseltabelle und eine Fremdschlüsseltabelle erstellt.
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);
Bei der Abfrage mit der Anweisung in Beispiel 1 sehen die Abfrageergebnisse in etwa so aus: Beachten Sie, dass die Spalten CONSTRAINT_CATALOG, CONSTRAINT_SCHEMA und doppelte Spalten nicht in den Beispielergebnissen enthalten sind.
+---------------------------+--------------+-------------+------------------+-------------------------------+ | 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 | +---------------------------+--------------+-------------+------------------+-------------------------------+