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_constraintuntuk 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
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:
Databricks SQL
Databricks Runtime 11.3 LTS dan yang lebih baru
hanya Unity CatalogMenambahkan 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.
TIMESERIESBerlaku untuk:
Databricks SQL
Databricks Runtime 13.3 LTS ke atasKomponen 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_constraintsetara dengantable_constraintPRIMARY KEY (key_column) [ constraint_option ] [...]FOREIGN KEY (foreign_key_column [, ...] ) REFERENCES parent_table [ ( parent_column [, ...] ) ] foreign_key_optionBerlaku untuk:
Databricks SQL
Databricks Runtime 11.3 LTS dan yang lebih baru
hanya Unity CatalogMenambahkan 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_columnyang cocok. Jumlah kolom harus sesuai dengan jumlahparent_columnyang 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 KEYyang ditentukan, dan Anda harus memiliki hak istimewaSELECTpada 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_optionMenambahkan batasan kunci asing kolom tunggal ke tabel atau tampilan materialisasi, menggunakan definisi kolom kunci asing sebelumnya.
Ini
column_constraintsetara dengantable_constraintFOREIGN 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 ENFORCEDAzure Databricks tidak mengambil tindakan untuk memberlakukannya untuk baris yang sudah ada atau baru.
DEFERRABLEPenegakan batasan dapat ditangguhkan.
INITIALLY DEFERREDPenegakan pengekangan ditangguhkan.
NORELYatauRELYBerlaku untuk:
Databricks SQL
Databricks Runtime 14.2 ke atas untuk PRIMARY KEYbatasanBerlaku untuk:
Databricks SQL
Databricks Runtime 15.4 ke atas untuk pembatasan FOREIGN KEYJika
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 perintahRELYmengharuskan 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 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
-- 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);