התצוגה KEY_COLUMN_USAGE

התצוגה KEY_COLUMN_USAGE מכילה עמודות של הטבלאות מ-TABLE_CONSTRAINTS שמוגבלות כמפתחות על ידי אילוצי מפתח ראשי ומפתח זר.

סכימה

לתצוגה INFORMATION_SCHEMA.KEY_COLUMN_USAGE יש את הסכימה הבאה:

שם עמודה סוג הנתונים ערך

constraint_catalog

STRING

שם הפרויקט של האילוץ.

constraint_schema

STRING

שם קבוצת הנתונים של האילוץ.

constraint_name

STRING

שם האילוץ.

table_catalog

STRING

שם הפרויקט של הטבלה המוגבלת.

table_schema

STRING

השם של מערך הנתונים של הטבלה המוגבלת.

table_name

STRING

השם של הטבלה המוגבלת.

column_name

STRING

השם של העמודה המוגבלת.

ordinal_position

INT64

המיקום הסידורי של העמודה בתוך מפתח האילוץ (החל מ-1).

position_in_unique_constraint

INT64

למפתחות זרים, המיקום הסידורי של העמודה באילוץ של המפתח הראשי (החל מ-1). הערך הזה הוא NULL לגבי אילוצי מפתח ראשי.

כדי לשמור על יציבות, מומלץ לציין במפורש את העמודות בשאילתות של סכימת המידע, במקום להשתמש בתו כל כללי (SELECT *). ציון מפורש של העמודות מונע את השבירה של השאילתות אם הסכימה הבסיסית משתנה.

היקף ותחביר

שאילתות שמופעלות על התצוגה הזו חייבות לכלול מסנן של מערך נתונים. כדי להריץ שאילתות עם מסווג של מערך נתונים, צריכות להיות לכם הרשאות למערך הנתונים. מידע נוסף זמין במאמר בנושא תחביר. בטבלה הבאה מוצגים היקפי האזור והמשאבים של התצוגה הזו:

שם התצוגה היקף המשאבים היקף האזור
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.KEY_COLUMN_USAGE; רמת מערך הנתונים מיקום מערך הנתונים
מחליפים את מה שכתוב בשדות הבאים:
  • אופציונלי: PROJECT_ID: מזהה הפרויקט ב- Google Cloud . אם לא מציינים פרויקט, המערכת משתמשת בפרויקט שמוגדר כברירת מחדל.

כדי להריץ שאילתות עם מזהה מערך נתונים, צריכות להיות לכם הרשאות למערך הנתונים. כדי להריץ שאילתות עם מסנן אזור, צריך הרשאות בפרויקט.

דוגמאות

דוגמה 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                             |
+---------------------------+--------------+-------------+------------------+-------------------------------+