ADD CONSTRAINT yan tümcesi
Şunlar için geçerlidir: Databricks SQL Databricks Runtime
Var olan bir Delta Lake tablosuna bilgi birincil anahtarı, bilgilendiren yabancı anahtar veya zorunlu denetim kısıtlaması ekler.
Sözdizimi
ADD [check_constraint | key_constraint ]
check_constraint
CONSTRAINT name CHECK ( condition ) [ ENFORCED ]
key_constraint
{ [ CONSTRAINT name ]
{
PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ] |
{ FOREIGN KEY (foreign_key_column [, ...] )
REFERENCES parent_table [ ( 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 NOT ENFORCED DEFERRABLE INITIALLY DEFERRED
belirtebilirsinizENABLE NOVALIDATE
.
Parametreler
check_constraint
Delta Lake tablosu için denetim kısıtlaması tanımlar.
CONSTRAINT
adKısıtlama için bir ad belirtir. Ad, tablo içinde benzersiz olmalıdır. Ad sağlanmazsa Azure Databricks bir ad oluşturur.
CHECK (
koşul)
condition
bir döndüren belirleyici birBOOLEAN
ifade olmalıdır.condition
değişmez değerlerden, tablo 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ğerli oluşturucu işlevleri
Ayrıca
condition
herhangi bir alt sorgu içermemelidir.Azure Databricks'te bir
CHECK
kısıtlamanın karşılanması için olarak değerlendirilmesitrue
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 üzeri
Delta Lake tablosu için bilgilendirme birincil anahtarı veya bilgi yabancı anahtar kısıtlamasını tanımlar.
CONSTRAINT
adİ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şturur.
PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ]
Şunlar için geçerlidir: Yalnızca Unity Kataloğu
Delta Lake tablosuna birincil anahtar kısıtlaması ekler. Bir tabloda en fazla bir birincil anahtar olabilir.
Birincil anahtar kısıtlamaları katalogdaki
hive_metastore
tablolar için desteklenmez.-
Konu tablosunun olarak
NOT NULL
tanımlanan sütunu. Sütun adları yinelenmemelidir. 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.
FOREIGN KEY ( foreign_key_column [, ...] ) REFERENCES parent_table [ ( parent_column [, ...] ) ] foreign_key_option
Şunlar için geçerlidir: Yalnızca Unity Kataloğu
Delta Lake tablosuna yabancı anahtar (bilgi tutarlılığı) kısıtlaması ekler.
Yabancı anahtar kısıtlamaları katalogdaki
hive_metastore
tablolar için desteklenmez.-
Konu tablosunun sütunu. Sütun adları yinelenmemelidir. Her sütunun veri türü eşleşen türüyle eşleşmelidir
parent_column
. Sütun sayısı, sayısıylaparent_columns
eşleşmelidir. İki yabancı anahtar, aynı yabancı anahtar sütunları kümesini paylaşamaz. -
Yabancı anahtarın başvurduğu tabloyu belirtir. Tablonun tanımlı
PRIMARY KEY
bir kısıtlaması olmalı ve tabloda ayrıcalığınızSELECT
olmalıdır. -
Birincil anahtarının parçası olan üst tablodaki bir sütun. Üst tablonun tüm birincil anahtar sütunları listelenmelidir.
Üst sütunlar listelenmiyorsa, tanımda
PRIMARY KEY
verilen sırayla belirtilmeleri gerekir.
Yalnızca yabancı anahtar sütunlarının permütasyonunda farklılık gösteren yabancı anahtar kısıtlamalarına izin verilmez.
-
constraint_option
Kısıtlamaların özelliklerini listeler. Tüm özellikler isteğe bağlıdır ancak varsayılan olarak örtülür. Her özellik en fazla bir kez belirtilebilir.
NOT ENFORCED
Azure Databricks, var olan veya yeni satırlar için zorlamak için hiçbir işlem gerçekleştirmez.
DEFERRABLE
Kısıtlama zorlaması ertelenebilir.
INITIALLY DEFERRED
Kısıtlama zorlaması ertelenmiş.
NORELY
veyaRELY
Şunlar için geçerlidir: Kısıtlamalar için
PRIMARY KEY
Databricks SQL Databricks Runtime 14.2 ve üzeriŞunlar için geçerlidir: Kısıtlamalar için
FOREIGN KEY
Databricks Runtime 15.4 ve üzeriise
RELY
, Azure Databricks sorguları yeniden yazmak için kısıtlamadan yararlanabilir. 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_option
Yabancı anahtar kısıtlamalarına özgü özellikleri listeler. Tüm özellikler isteğe bağlıdır ancak varsayılan olarak örtülür. Her özellik en fazla bir kez belirtilebilir.
MATCH FULL
Kısıtlamanın doğru olarak kabul edilmesi için tüm sütun değerlerinin olması
NOT NULL
gerekir.ON UPDATE NO ACTION
Üst öğe
PRIMARY KEY
gü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 veya yabancı anahtar kısıtlamalarını zorlamaz. Birincil veya yabancı anahtar 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);