Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:
Databricks SQL
Databricks Runtime
Var olan Delta Lake tablosuna bilgi birincil anahtarı, bilgilendiren yabancı anahtar, bilgi benzersiz kısıtlaması veya zorunlu denetim kısıtlaması ekler.
Sözdizimi
ADD [check_constraint | key_constraint ]
check_constraint
CONSTRAINT name CHECK ( condition )
key_constraint
{ [ CONSTRAINT name ]
{
PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ] |
UNIQUE ( key_column [, ...] ) [ 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 }
Standart olmayan SQL diyalektleriyle uyumluluk için yerine ENABLE NOVALIDATEbelirtebilirsinizNOT ENFORCED DEFERRABLE INITIALLY DEFERRED.
Parametreler
check_constraintİlişki için denetim kısıtlaması tanımlar.
CONSTRAINTadKısıtlama için bir ad belirtir. Ad, ilişki içinde benzersiz olmalıdır.
CHECK (koşul)DEFAULT COLLATIONİlişkinin, kısıtlama eklendiği sırada olmasıUTF8_BINARYgerekir.condition, birBOOLEANdöndüren belirleyici bir ifade olmalıdır.conditiondeğişmez değerlerden, ilişki içindeki sütun tanımlayıcılarından ve aşağıdakiler dışında belirleyici, yerleşik SQL işlevlerinden veya işleçlerinden oluşabilir:- Toplama işlevleri
- Analitik pencere işlevleri
- Derecelendirme penceresi işlevleri
- Tablo değerleri döndüren oluşturucu fonksiyonları
-
STRINGsütunları,UTF8_BINARYdışında harmanlamalar içeren
Ayrıca
conditionherhangi bir alt sorgu içermemelidir.Azure Databricks'te bir
CHECKkısıtlamasının karşılanması için değerinitrueolarak değerlendirmesi gerekir.Delta Lake, hem yeni hem de mevcut verilerde denetim kısıtlamasının geçerliliğini doğrular. Mevcut satırlardan herhangi biri kısıtlamayı ihlal ederse bir hata oluşur.
key_constraintÖnemli
Bu özellik Genel Önizlemededir.
Şunlar için geçerlidir:
Databricks SQL
Databricks Runtime 11.3 LTS ve üzeriBir ilişki için bilgilendirsel birincil anahtar, bilgilendiren yabancı anahtar veya bilgisel benzersiz kısıtlama tanımlar. Bilgi anahtarı kısıtlamaları uygulanmaz, ancak sorgu iyileştirmelerini destekleyerek performansı artırabilir.
CONSTRAINTadİsteğe bağlı olarak kısıtlama için bir ad belirtir. Adın şema içinde benzersiz olması gerekir. Ad sağlanmazsa Azure Databricks bir ad oluşturacaktır.
PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ]Şunlar için geçerlidir:
evet olarak işaretlenmiş onay kutusunu işaretleyinİlişkiye birincil anahtar kısıtlaması ekler. Bir ilişki en fazla bir birincil anahtara sahip olabilir.
Birincil anahtar kısıtlamaları katalogdaki
hive_metastoreilişkiler için desteklenmez.-
olarak
NOT NULLtanımlanan konu ilişkisinin sütunu. Sütun adları tekrar edilmemelidir. TIMESERIESŞunlar için geçerlidir:
Databricks SQL
Databricks Runtime 13.3 LTS ve üzeriİsteğe bağlı olarak birincil anahtar sütunu bileşenini zaman aralıklarını temsil eden olarak etiketler.
UNIQUE ( key_column [, ...] ) [ constraint_option [...] ]Şunun için geçerlidir:
Databricks SQL
Databricks Runtime 18.2 ve üzeri 
İlişkiye benzersiz bir kısıtlama ekler. bir ilişki birden çok benzersiz kısıtlamaya sahip olabilir.
Bir
UNIQUEkısıtlamadaki sütunlar null atanabilir.NULLsütunlarındakiUNIQUEdeğerler birbirinden ayrı olarak değerlendirilir, bu nedenle yinelenenNULLdeğerler kısıtlamanınUNIQUEsemantiğini ihlal etmiyor.Katalogdaki
hive_metastoreilişkiler için benzersiz kısıtlamalar desteklenmez.-
Özne ilişkisine ait sütun. Sütun adları tekrar edilmemelidir.
-
FOREIGN KEY ( foreign_key_column [, ...] ) REFERENCES parent_relation [ ( parent_column [, ...] ) ] foreign_key_optionŞunlar için geçerlidir:
evet olarak işaretlenmiş onay kutusunu işaretleyinİlişkiye yabancı anahtar (bilgi tutarlılığı) kısıtlaması ekler.
Katalogdaki
hive_metastoreilişkiler için yabancı anahtar kısıtlamaları desteklenmez.-
Özne ilişkisine ait sütun. Sütun adları tekrar edilmemelidir. Her sütunun veri türü eşleşen
parent_columntürüyle eşleşmelidir. Sütun sayısı,parent_columnssayısıyla eşleşmelidir. İki yabancı anahtar, aynı yabancı anahtar sütunları kümesini paylaşamaz. -
Yabancı anahtarın başvurduğu ilişkiyi belirtir. İlişkinin tanımlı
PRIMARY KEYbir kısıtlaması veya Databricks Runtime 18.2 ve sonraki sürümleri için tanımlıUNIQUEbir kısıtlamaya sahipSELECTolması ve ilişkide ayrıcalığınız olması gerekir. -
Birincil anahtarının parçası olan veya Databricks Runtime 18.2 ve sonraki sürümlerin benzersiz bir kısıtlamanın parçası olan üst ilişkideki bir sütun. Üst ilişkideki tüm birincil anahtar sütunları veya benzersiz kısıtlama sütunları listelenmelidir.
Ebeveyn sütunlar listelenmediyse,
PRIMARY KEYtanımında verilen sıraya göre belirtildiği varsayılır.
Yalnızca yabancı anahtar sütunlarının permütasyonunda farklılık gösteren yabancı anahtar kısıtlamalarına izin verilmez.
-
constraint_optionKısıtlamaların özelliklerini listeler. Tüm özellikler isteğe bağlıdır ancak varsayılan olarak ima edilir. Her özellik en fazla bir kez belirtilebilir.
NOT ENFORCEDAzure Databricks, mevcut veya yeni satırlar üzerinde herhangi bir zorlama yapmaz.
DEFERRABLEKısıtlama uygulanması ertelenebilir.
INITIALLY DEFERREDKısıtlama zorlaması ertelenmiştir.
NORELYveyaRELYŞunlar için geçerlidir:
Databricks SQL
Kısıtlamalar için Databricks Runtime 14.2 ve üzeriŞunlar için geçerlidir:
Databricks SQL 
Şunun için geçerlidir:
Databricks SQL denetimi kısıtlamaları için UNIQUEevet Databricks Runtime 18.2 ve üzeri
Eğer
RELYvarsa, Azure Databricks sorguları yeniden yazmak için kısıtlamayı kullanabilir. Kısıtlamanın karşılandığından emin olmak kullanıcının sorumluluğundadır. Karşılanmamış bir kısıtlamaya güvenmek yanlış sorgu sonuçlarına neden olabilir.Varsayılan değer:
NORELY.
foreign_key_optionYabancı anahtar kısıtlamalarına özgü özellikleri listeler. Tüm özellikler isteğe bağlıdır ancak varsayılan olarak ima edilir. Her özellik en fazla bir kez belirtilebilir.
MATCH FULLKısıtlamanın doğru olarak kabul edilmesi için tüm sütun değerlerinin
NOT NULLolması gerekir.ON UPDATE NO ACTIONÜst
PRIMARY KEYgüncelleştirildiyse Azure Databricks güncelleştirmeyi kısıtlamak veya yabancı anahtarı güncelleştirmek için hiçbir işlem gerçekleştirmez.ON DELETE NO ACTIONÜst satır silinirse Azure Databricks eylemi kısıtlamak, yabancı anahtarı güncelleştirmek veya bağımlı satırı silmek için hiçbir işlem gerçekleştirmez.
Önemli
Azure Databricks birincil anahtar, yabancı anahtar veya benzersiz kısıtlamaları zorunlu kılmaz. Birincil anahtar, yabancı anahtar veya benzersiz kısıtlama eklemeden önce anahtar kısıtlamalarını onaylayın. Alma işleminiz böyle bir güvence sağlayabilir veya verileriniz üzerinde denetimler çalıştırabilirsiniz.
Örnekler
-- 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);
-- Add a unique constraint
> CREATE TABLE person_emails(first_name STRING NOT NULL, last_name STRING NOT NULL, email STRING);
> ALTER TABLE person_emails ADD CONSTRAINT person_emails_uq UNIQUE(email);