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 informasi , kunci asing informasi , atau batasan pemeriksaan yang diberlakukan ke tabel Delta Lake yang ada.
Sintaks
ADD [check_constraint | key_constraint ]
check_constraint
CONSTRAINT name CHECK ( condition )
key_constraint
{ [ CONSTRAINT name ]
{
PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ] |
{ FOREIGN KEY (foreign_key_column [, ...] )
REFERENCES parent_relation [ ( parent_column [, ...] ] )
[ constraint_option | foreign_key_option ] [...]
}
}
constraint_option
{ NOT ENFORCED |
DEFERRABLE |
INITIALLY DEFERRED |
{ NORELY | RELY } }
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
check_constraintMenentukan batasan pemeriksaan untuk relasi.
CONSTRAINTnamaMenentukan nama untuk batasan. Nama harus unik dalam hubungan.
CHECK (kondisi)Hubungan
DEFAULT COLLATIONharus dalam keadaanUTF8_BINARYpada saat batasan ditambahkan.conditionharus berupa ekspresi deterministik yang mengembalikanBOOLEAN.conditiondapat terdiri dari literal, pengidentifikasi kolom dalam hubungan, dan deterministik, fungsi atau operator SQL bawaan kecuali:- Fungsi agregat
- fungsi jendela analitik
- Fungsi jendela peringkat
- Fungsi generator yang menghasilkan tabel
-
STRINGkolom dengan pengurutan selainUTF8_BINARY
Juga
conditiontidak boleh berisi subkueri apa pun.Agar batasan
CHECKterpenuhi di Azure Databricks, batasan harus dievaluasi ketrue.Delta Lake memverifikasi validitas batasan pemeriksaan terhadap data baru dan yang sudah ada. Jika ada baris yang melanggar batasan, akan muncul kesalahan.
key_constraintPenting
Fitur ini ada di Pratinjau Publik.
Berlaku untuk:
Databricks SQL
Databricks Runtime 11.3 LTS ke atasMenentukan kunci primer informasi atau batasan kunci asing informasional untuk relasi. Batasan kunci informasi tidak diberlakukan tetapi dapat meningkatkan performa dengan mendukung pengoptimalan kueri .
CONSTRAINTnamaSecara 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:
hanya untuk Katalog UnityMenambahkan batasan kunci utama ke relasi. Hubungan dapat memiliki paling banyak satu kunci primer.
Batasan kunci primer tidak didukung untuk hubungan dalam
hive_metastorekatalog.-
Kolom hubungan subjek yang didefinisikan sebagai
NOT NULL. Nama kolom tidak boleh diulang. TIMESERIESBerlaku untuk:
Databricks SQL
Databricks Runtime 13.3 LTS ke atasSecara opsional, menandai komponen kolom kunci utama sebagai mewakili seri waktu.
FOREIGN KEY ( foreign_key_column [, ...] ) REFERENCES parent_relation [ ( parent_column [, ...] ) ] foreign_key_optionBerlaku untuk:
hanya untuk Katalog UnityMenambahkan batasan kunci asing (integritas referensial) ke relasi.
Batasan kunci asing tidak didukung untuk hubungan dalam katalog
hive_metastore.-
Kolom hubungan subjek. Nama kolom tidak boleh diulang. Jenis data setiap kolom harus cocok dengan jenis
parent_columnyang cocok. Jumlah kolom harus cocok dengan jumlahparent_columns. Dua kunci asing tidak dapat berbagi sekumpulan kolom kunci asing yang identik. -
Menentukan hubungan yang dirujuk oleh kunci asing. Hubungan harus memiliki batasan yang ditentukan
PRIMARY KEY, dan Anda harus memilikiSELECThak istimewa pada hubungan tersebut. -
Kolom dalam relasi induk yang merupakan bagian dari kunci utamanya. Semua kolom kunci utama relasi induk harus dicantumkan.
Jika kolom induk tidak tercantum, kolom tersebut tersirat untuk ditentukan dalam urutan yang diberikan dalam definisi
PRIMARY KEY.
Batasan kunci asing yang hanya berbeda dalam permutasi kolom kunci asing tidak diizinkan.
-
constraint_optionMencantumkan properti kendala. Semua properti bersifat opsional tetapi tersirat secara default. Setiap properti hanya dapat ditentukan satu kali.
NOT ENFORCEDAzure Databricks tidak mengambil tindakan untuk memberlakukannya untuk baris yang sudah ada atau baru.
DEFERRABLEPenegakan batasan dapat ditangguhkan.
INITIALLY DEFERREDPemberlakuan pembatasan ditangguhkan.
NORELYatauRELYBerlaku untuk:
Databricks SQL
Databricks Runtime 14.2 ke atas untuk PRIMARY KEYbatasanBerlaku untuk:
Databricks SQL
Databricks Runtime 15.4 ke atas untuk batasan FOREIGN KEYJika
RELY, Azure Databricks dapat mengeksploitasi batasan untuk menulis ulang kueri. Adalah tanggung jawab pengguna untuk memastikan batasan terpenuhi. Mengandalkan batasan yang tidak terpenuhi dapat menyebabkan hasil kueri yang salah.Default adalah
NORELY.
foreign_key_optionMencantumkan properti yang spesifik untuk batasan kunci asing. Semua properti bersifat opsional tetapi tersirat secara default. Setiap properti hanya dapat ditentukan satu kali.
MATCH FULLAgar batasan dianggap benar semua nilai kolom harus
NOT NULL.ON UPDATE NO ACTIONJika
PRIMARY KEYinduk diperbarui, Azure Databricks tidak mengambil tindakan untuk membatasi pembaruan atau memperbarui kunci asing.ON DELETE NO ACTIONJika 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
-- Add a primary key
> CREATE TABLE persons(first_name STRING NOT NULL, last_name STRING NOT NULL, nickname STRING);
> ALTER TABLE persons ADD CONSTRAINT persons_pk PRIMARY KEY(first_name, last_name);
-- Add a foreign key which Databricks does not enforce, but can rely upon.
> CREATE TABLE pets(name STRING, owner_first_name STRING, owner_last_name STRING);
> ALTER TABLE pets ADD CONSTRAINT pets_persons_fk
FOREIGN KEY(owner_first_name, owner_last_name) REFERENCES persons
NOT ENFORCED RELY;
-- Add a check contraint
> ALTER TABLE pets ADD CONSTRAINT pets_name_not_cute_chk CHECK (length(name) < 20);