Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: Databricks SQL
Databricks Runtime
Menambahkan kunci primer informasional atau kunci asing informasional sebagai bagian dari pernyataan CREATE TABLE atau CREATE MATERIALIZED VIEW.
Untuk menambahkan batasan pemeriksaan ke tabel Delta Lake, gunakan ALTER TABLE setelah tabel dibuat.
Sintaks
Gunakan klausa table_constraint
untuk menentukan batasan yang mencakup beberapa kolom atau untuk memisahkan sintaks dari definisi kolom.
table_constraint
{ [ CONSTRAINT name ]
{ PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ] |
{ FOREIGN KEY ( foreign_key_column [, ...] )
REFERENCES parent_table [ ( parent_column [, ...] ) ]
[ foreign_key_option | constraint_option ] [...]
}
}
}
Gunakan klausa column_constraint
untuk menentukan batasan khusus untuk definisi kolom tunggal.
column_constraint
{ [ CONSTRAINT name ]
{ PRIMARY KEY [ constraint_option ] [...] |
{ [ FOREIGN KEY ]
REFERENCES parent_table [ ( parent_column [, ...] ) ]
[ foreign_key_option | constraint_option ] [...]
}
}
}
constraint_option
{ NOT ENFORCED |
DEFERRABLE |
INITIALLY DEFERRED |
{ RELY | NORELY } }
foreign_key_option
{ MATCH FULL |
ON UPDATE NO ACTION |
ON DELETE NO ACTION }
Untuk kompatibilitas dengan dialek SQL non-standar, Anda dapat menentukan ENABLE NOVALIDATE
alih-alih NOT ENFORCED DEFERRABLE INITIALLY DEFERRED
.
Parameter
CONSTRAINT
namaSecara opsional menentukan nama untuk batasan. Nama harus unik dalam skema. Jika tidak ada nama yang disediakan, Azure Databricks akan menghasilkannya.
PRIMARY KEY
( key_column [ TIMESERIES ] [, ...] ) [constraint_option [...] ]Berlaku untuk:
Databricks SQL
Databricks Runtime 11.3 LTS dan yang lebih baru
hanya Unity Catalog
Menambahkan batasan kunci primer informasi ke tabel atau tampilan materialisasi. Tabel atau tampilan materialisasi dapat memiliki paling banyak satu kunci utama.
Kolom kunci utama secara implisit didefinisikan sebagai
NOT NULL
.Batasan kunci utama tidak didukung untuk tabel di katalog
hive_metastore
.-
Kolom tabel subjek atau tampilan materialisasi. Nama kolom tidak boleh diulang.
TIMESERIES
Berlaku untuk:
Databricks SQL
Databricks Runtime 13.3 LTS ke atas
Komponen kolom kunci utama dapat dilabeli sebagai mewakili deret waktu secara opsional.
-
PRIMARY KEY [ constraint_option ] [...]
Menambahkan batasan kunci utama kolom tunggal ke tabel atau tampilan materialisasi, menggunakan definisi kolom kunci sebelumnya.
Ini
column_constraint
setara dengantable_constraint
PRIMARY KEY (key_column) [ constraint_option ] [...]
FOREIGN KEY (foreign_key_column [, ...] ) REFERENCES parent_table [ ( parent_column [, ...] ) ] foreign_key_option
Berlaku untuk:
Databricks SQL
Databricks Runtime 11.3 LTS dan yang lebih baru
hanya Unity Catalog
Menambahkan batasan kunci asing informasional (integritas referensial) ke tabel atau tampilan materialisasi.
Batasan kunci asing tidak didukung untuk tabel dalam katalog
hive_metastore
.Batasan kunci asing yang hanya berbeda dalam permutasi kolom kunci asing tidak diizinkan.
-
Kolom tabel subjek atau tampilan materialisasi. Nama kolom tidak boleh diulang. Jenis data setiap kolom harus cocok dengan jenis
parent_column
yang cocok. Jumlah kolom harus sesuai dengan jumlahparent_column
yang ada. Dua kunci asing tidak dapat berbagi sekumpulan kolom kunci asing yang identik. -
Menunjukkan tabel atau tampilan materialisasi yang dirujuk oleh kunci asing. Tabel harus memiliki batasan
PRIMARY KEY
yang ditentukan, dan Anda harus memiliki hak istimewaSELECT
pada tabel. -
Kolom dalam tabel induk atau tampilan materialisasi yang merupakan bagian dari kunci utamanya. Semua kolom kunci utama tabel induk atau tampilan materialisasi harus dicantumkan.
Jika kolom induk tidak tercantum, kolom tersebut ditentukan oleh urutan yang diberikan dalam definisi
PRIMARY KEY
. FOREIGN KEY REFERENCES parent_table [ ( parent_column ) ] foreign_key_option
Menambahkan batasan kunci asing kolom tunggal ke tabel atau tampilan materialisasi, menggunakan definisi kolom kunci asing sebelumnya.
Ini
column_constraint
setara dengantable_constraint
FOREIGN KEY ( foreign_key_column ) REFERENCES parent_table [ ( parent_column ) ] foreign_key_option
-
opsi_kendala
Mencantumkan properti batasan. Semua properti bersifat opsional tetapi tersirat secara default. Setiap properti paling banyak dapat ditentukan sekali.
NOT ENFORCED
Azure Databricks tidak mengambil tindakan untuk memberlakukannya untuk baris yang sudah ada atau baru.
DEFERRABLE
Penegakan batasan dapat ditangguhkan.
INITIALLY DEFERRED
Penegakan pengekangan ditangguhkan.
NORELY
atauRELY
Berlaku untuk:
Databricks SQL
Databricks Runtime 14.2 ke atas untuk
PRIMARY KEY
batasanBerlaku untuk:
Databricks SQL
Databricks Runtime 15.4 ke atas untuk pembatasan
FOREIGN KEY
Jika
RELY
, Azure Databricks dapat mengeksploitasi batasan untuk menulis ulang dan mengoptimalkan kueri. Adalah tanggung jawab pengguna untuk memastikan batasan terpenuhi. Mengandalkan batasan yang tidak terpenuhi dapat menyebabkan hasil kueri yang salah. Optimasi kueri yang terkait dengan perintahRELY
mengharuskan kueri dijalankan pada sistem komputasi yang didukung Photon. Lihat Apa itu Photon?.Default adalah
NORELY
.
foreign_key_option
Mencantumkan properti khusus untuk batasan kunci asing. Semua properti bersifat opsional tetapi tersirat secara default. Setiap properti paling banyak dapat ditentukan sekali.
MATCH FULL
Agar batasan dianggap benar semua nilai kolom harus
NOT NULL
.ON UPDATE NO ACTION
Jika
PRIMARY KEY
induk diperbarui, Azure Databricks tidak mengambil tindakan untuk membatasi pembaruan atau memperbarui kunci asing.ON DELETE NO ACTION
Jika baris induk dihapus, Azure Databricks tidak mengambil tindakan untuk membatasi tindakan, memperbarui kunci asing, atau menghapus baris dependen.
Penting
Azure Databricks tidak memberlakukan batasan kunci primer atau kunci asing. Konfirmasi batasan kunci sebelum menambahkan kunci primer atau asing. Proses penyerapan Anda dapat memberikan jaminan tersebut, atau Anda dapat menjalankan pemeriksaan terhadap data Anda.
Contoh
-- Create a table with a primary key
> CREATE TABLE persons(first_name STRING NOT NULL, last_name STRING NOT NULL, nickname STRING,
CONSTRAINT persons_pk PRIMARY KEY(first_name, last_name));
-- create a table with a foreign key
> CREATE TABLE pets(name STRING, owner_first_name STRING, owner_last_name STRING,
CONSTRAINT pets_persons_fk FOREIGN KEY (owner_first_name, owner_last_name) REFERENCES persons);
-- Create a table with a single column primary key and system generated name
> CREATE TABLE customers(customerid STRING NOT NULL PRIMARY KEY, name STRING);
-- Create a table with a names single column primary key and a named single column foreign key
> CREATE TABLE orders(orderid BIGINT NOT NULL CONSTRAINT orders_pk PRIMARY KEY,
customerid STRING CONSTRAINT orders_customers_fk REFERENCES customers);