Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:
Databricks SQL
Databricks Runtime
Dodaje informacyjny klucz podstawowy, informacyjny klucz obcy lub wymuszone ograniczenie sprawdzania do istniejącej tabeli usługi Delta Lake.
Składnia
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 }
Aby uzyskać zgodność z niestandardowymi dialektami SQL, można określić ENABLE NOVALIDATE zamiast NOT ENFORCED DEFERRABLE INITIALLY DEFERRED.
Parametry
check_constraintDefiniuje ograniczenie sprawdzania dla relacji.
CONSTRAINTnazwaOkreśla nazwę ograniczenia. Nazwa musi być unikatowa w obrębie relacji.
CHECK (warunek)Relacja
DEFAULT COLLATIONmusi byćUTF8_BINARYw momencie dodania ograniczenia.conditionmusi być wyrażeniem deterministycznym zwracającymBOOLEANwartość.conditionMoże składać się z literałów, identyfikatorów kolumn w ramach relacji oraz deterministycznych, wbudowanych funkcji LUB operatorów SQL, z wyjątkiem:- Funkcje agregujące
- Funkcje okna analitycznego
- Funkcje okna klasyfikacji
- Funkcje generatora wartości tabeli
-
STRINGkolumny z sortowaniami innymi niżUTF8_BINARY
Ponadto
conditionnie może zawierać żadnego podzapytania.Aby ograniczenie zostało spełnione w usłudze Azure Databricks, musi zostać obliczone na
CHECK.Delta Lake weryfikuje ważność warunku kontrolnego zarówno w odniesieniu do nowych, jak i istniejących danych. Jeśli jakikolwiek istniejący wiersz narusza ograniczenie, zostanie zgłoszony błąd.
key_constraintWażne
Ta funkcja jest dostępna w publicznej wersji zapoznawczej.
Dotyczy:
Databricks SQL
Databricks Runtime 11.3 LTS i nowszeDefiniuje informacyjny klucz podstawowy lub informacyjne ograniczenie klucza obcego dla relacji. Ograniczenia klucza informacyjnego nie są wymuszane, ale mogą zwiększyć wydajność, obsługując optymalizacje zapytań .
CONSTRAINTnazwaOpcjonalnie określa nazwę ograniczenia. Nazwa musi być unikatowa w schemacie. Jeśli żadna nazwa nie zostanie podana, usługa Azure Databricks wygeneruje jedną nazwę.
PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ]Dotyczy:
tylko Unity CatalogDodaje ograniczenie klucza podstawowego do relacji. Relacja może mieć co najwyżej jeden klucz podstawowy.
Ograniczenia klucza podstawowego nie są obsługiwane w przypadku relacji w wykazie
hive_metastore.-
Kolumna relacji podmiotu zdefiniowana jako
NOT NULL. Nazwy kolumn nie mogą być powtarzane. TIMESERIESDotyczy:
Databricks SQL
Databricks Runtime 13.3 LTS i nowszeOpcjonalnie oznacza składnik kolumny klucza podstawowego jako reprezentujący szereg czasowy.
FOREIGN KEY ( foreign_key_column [, ...] ) REFERENCES parent_relation [ ( parent_column [, ...] ) ] foreign_key_optionDotyczy:
tylko Unity CatalogDodaje ograniczenie integralności referencyjnej (klucz obcy) do relacji.
Ograniczenia klucza obcego nie są obsługiwane dla relacji w katalogu
hive_metastore.-
Kolumna relacji podmiotu. Nazwy kolumn nie mogą być powtarzane. Typ danych każdej kolumny musi być zgodny z typem pasującego
parent_columnelementu . Liczba kolumn musi być zgodna z liczbąparent_columns. Dwa klucze obce nie mogą współdzielić identycznego zestawu kolumn kluczy obcych. -
Określa relację, do których odwołuje się klucz obcy. Relacja musi mieć zdefiniowane
PRIMARY KEYograniczenie i musisz miećSELECTuprawnienie do relacji. -
Kolumna w relacji nadrzędnej, która jest częścią klucza podstawowego. Wszystkie kolumny klucza podstawowego relacji nadrzędnej muszą być wymienione.
Jeśli kolumny nadrzędne nie są wymienione, uważa się je za określone w kolejności podanej w definicji
PRIMARY KEY.
Ograniczenia klucza obcego, które różnią się tylko permutacją kolumn klucza obcego, są niedozwolone.
-
constraint_optionWyświetla listę właściwości ograniczeń. Wszystkie właściwości są opcjonalne, ale domyślnie implikowane. Każda właściwość może być określona co najwyżej raz.
NOT ENFORCEDUsługa Azure Databricks nie wykonuje żadnych działań, aby to egzekwować dla istniejących lub nowych wierszy.
DEFERRABLEWymuszanie ograniczenia można odroczyć.
INITIALLY DEFERREDWymuszanie ograniczeń jest odroczone.
NORELYlubRELYDotyczy:
Databricks SQL
Databricks Runtime 14.2 i nowsze w przypadku PRIMARY KEYograniczeńDotyczy:
Databricks SQL
Databricks Runtime 15.4 lub nowsze dla ograniczeń FOREIGN KEYJeśli
RELY, usługa Azure Databricks może wykorzystać ograniczenie do ponownego zapisywania zapytań. Użytkownik ponosi odpowiedzialność za zapewnienie, że ograniczenie jest spełnione. Poleganie na ograniczeniu, które nie jest spełnione, może prowadzić do nieprawidłowych wyników zapytania.Wartość domyślna to
NORELY.
foreign_key_optionWyświetla listę właściwości specyficznych dla ograniczeń klucza obcego. Wszystkie właściwości są opcjonalne, ale domyślnie implikowane. Każda właściwość może być określona co najwyżej raz.
MATCH FULLAby ograniczenie było uznawane za prawdziwe, wszystkie wartości kolumn muszą mieć wartość
NOT NULL.ON UPDATE NO ACTIONJeśli element nadrzędny
PRIMARY KEYjest aktualizowany, usługa Azure Databricks nie podejmuje żadnych działań w celu ograniczenia aktualizacji lub aktualizacji klucza obcego.ON DELETE NO ACTIONJeśli wiersz nadrzędny zostanie usunięty, Azure Databricks nie podejmuje żadnych działań, aby ograniczyć tę operację, zaktualizować klucz obcy ani usunąć wiersza zależnego.
Ważne
Usługa Azure Databricks nie wymusza ograniczeń klucza podstawowego ani klucza obcego. Przed dodaniem klucza podstawowego lub obcego potwierdź ograniczenia klucza. Twój proces pozyskiwania danych może zapewnić taką pewność, lub można przeprowadzić kontrole względem danych.
Przykłady
-- 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);