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 kunci utama, 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 kunci utama. Nilai-nilai ini bisa berupa NULL.
- Kunci utama dan kunci asing harus berupa salah satu dari jenis berikut:
BIGNUMERIC
,BOOLEAN
DATE
,DATETIME
,INT64
,NUMERIC
,STRING
, atauTIMESTAMP
.
- 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 |
---|---|---|
|
|
Nama project batasan. |
|
|
Nama set data batasan. |
|
|
Nama batasan. |
|
|
Nama project tabel yang dibatasi. |
|
|
Nama set data tabel yang dibatasi. |
|
|
Nama tabel yang dibatasi. |
|
|
PRIMARY KEY atau FOREIGN KEY |
|
|
YES atau NO bergantung pada apakah batasan dapat ditangguhkan. Hanya NO yang didukung. |
|
|
Hanya NO yang didukung. |
|
|
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 |
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 | +-----------------------------+