התצוגה TABLE_CONSTRAINTS

התצוגה TABLE_CONSTRAINTS מכילה את הקשרים של המפתח הראשי והמפתח הזר במערך נתונים של BigQuery.

ההרשאות הנדרשות

אתם צריכים את ההרשאות הבאות בממשק של ניהול הזהויות והרשאות הגישה (IAM):

  • bigquery.tables.get כדי לראות את ההגדרות של מפתחות ראשיים ומפתחות זרים.
  • bigquery.tables.list לצפייה בסכימות של מידע על טבלאות.

לכל אחד מהתפקידים המוגדרים מראש הבאים יש את ההרשאות הנדרשות לביצוע תהליכי העבודה שמפורטים במאמר הזה:

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

במאמר תפקידים והרשאות מוגדרים מראש יש מידע נוסף על תפקידים והרשאות ב-IAM ב-BigQuery.

סכימה

לתצוגה 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 KEY או FOREIGN KEY.

is_deferrable

STRING

YES או NO, בהתאם לשאלה אם אפשר לדחות את האילוץ. יש תמיכה רק ב-NO.

initially_deferred

STRING

יש תמיכה רק ב-NO.

enforced

STRING

YES או NO, בהתאם לשאלה אם האילוץ נאכף. ‫
יש תמיכה רק ב-NO.

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

היקף ותחביר

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

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

דוגמאות

השאילתה הבאה מציגה את האילוצים של טבלה אחת במערך נתונים:

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