Tampilan TABLE_CONSTRAINTS

Tampilan TABLE_CONSTRAINTS berisi hubungan kunci utama dan kunci asing dalam set data BigQuery.

Dalam database relasional standar, kunci utama dan kunci asing digunakan untuk memastikan integritas data. Nilai kunci utama bersifat unik untuk setiap baris dan bukan NULL. Setiap nilai kunci asing dalam satu baris harus ada di kolom kunci utama pada tabel yang dirujuk, atau berupa NULL. Hubungan kunci utama dan kunci asing dibuat serta dikelola melalui pernyataan DDL.

Batasan

  • Batasan nilai untuk kunci utama dan kunci asing tidak diterapkan. Pengguna harus memastikan bahwa nilai sesuai dengan batasan masing-masing. Jika tidak, mereka akan mendapatkan hasil yang keliru. Secara khusus:
    • Kunci utama harus memiliki nilai yang unik.
    • Kunci utama tidak boleh lebih dari 16 kolom.
    • Kunci asing harus memiliki nilai yang ada di kolom tabel yang dirujuk. Nilai ini dapat berupa NULL.
    • Kunci utama dan kunci asing harus berupa salah satu dari jenis berikut: BIGNUMERIC, BOOLEAN DATE, DATETIME, INT64, NUMERIC, STRING, atau TIMESTAMP.
  • Kunci utama dan kunci asing hanya dapat ditetapkan pada kolom tingkat atas.
  • Kunci utama tidak dapat dinamai.
  • Nama tabel dengan batasan kunci utama tidak dapat diganti.
  • Sebuah tabel dapat berisi hingga 64 kunci asing yang ditentukan dalam tabel.
  • Kunci asing tidak dapat merujuk ke kolom dalam tabel yang sama.
  • Kolom yang merupakan bagian dari batasan kunci utama atau batasan kunci asing tidak dapat diganti namanya, atau diubah jenisnya.
  • Jika Anda menyalin .mengc-clone .memulihkan, atau mengambil snapshot tabel tanpa-a atau--append_table batasan tabel sumber, batasan tabel sumber akan disalin dan ditimpa ke tabel tujuan. Jika Anda menggunakan opsi -a atau --append_table, hanya data tabel sumber yang ditambahkan ke tabel tujuan tanpa batasan tabel.

Izin yang diperlukan

Anda memerlukan izin Identity and Access Management (IAM) berikut:

  • bigquery.tables.get untuk melihat definisi kunci utama dan asing.
  • bigquery.tables.list untuk melihat skema informasi tabel.

Setiap peran yang telah ditetapkan berikut memiliki izin yang diperlukan untuk menjalankan alur kerja yang dijelaskan dalam dokumen ini:

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

Untuk mengetahui informasi lebih lanjut tentang peran dan izin IAM di BigQuery, baca Peran dan izin yang telah ditetapkan.

Skema

Tampilan INFORMATION_SCHEMA.TABLE_CONSTRAINTS memiliki skema berikut:

Nama Kolom Jenis Arti

CONSTRAINT_CATALOG

STRING

Nama project batasan.

CONSTRAINT_SCHEMA

STRING

Nama set data batasan.

CONSTRAINT_NAME

STRING

Nama batasan.

TABLE_CATALOG

STRING

Nama project tabel yang dibatasi.

TABLE_SCHEMA

STRING

Nama set data tabel yang dibatasi.

TABLE_NAME

STRING

Nama tabel yang dibatasi.

CONSTRAINT_TYPE

STRING

PRIMARY KEY atau FOREIGN KEY

IS_DEFERRABLE

STRING

YES atau NO bergantung pada apakah batasan dapat ditangguhkan. Hanya NO yang didukung.

INITIALLY_DEFERRED

STRING

Hanya NO yang didukung.

ENFORCED

STRING

YES atau NO bergantung pada apakah batasan diterapkan.
Hanya NO yang didukung.

Cakupan dan sintaksis

Kueri terhadap tampilan ini harus menyertakan penentu set data. Untuk kueri dengan penentu set data, Anda harus memiliki izin untuk set data. Untuk mengetahui informasi selengkapnya, lihat Sintaksis. Tabel berikut menampilkan cakupan region dan resource untuk tampilan ini:

Nama tampilan Cakupan resource Cakupan region
[PROJECT_ID.]DATASET.INFORMATION_SCHEMA.TABLE_CONSTRAINTS; Level set data Lokasi set data
Ganti kode berikut:

  • Opsional: PROJECT_ID: ID project Google Cloud Anda. Jika tidak ditentukan, project default akan digunakan.

    Contoh

    Kueri berikut menunjukkan batasan untuk satu tabel dalam set data:

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

    Ganti kode berikut:

    • PROJECT_ID: Opsional. Nama project cloud Anda. Jika tidak ditentukan, perintah ini akan menggunakan project default.
    • DATASET: Nama set data Anda.
    • TABLE: Nama tabel.

    Sebaliknya, kueri berikut menampilkan batasan untuk semua tabel dalam satu set data.

    SELECT *
    FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.TABLE_CONSTRAINTS;

    Dengan batasan yang ada, hasil kuerinya mirip dengan berikut ini:

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

    Jika tabel atau set data tidak memiliki batasan, hasil kueri akan terlihat seperti ini:

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