CONSTRAINT, klauzula
Dotyczy: Databricks SQL Databricks Runtime
Dodaje informacyjny klucz podstawowy lub informacyjny klucz obcy w ramach instrukcji CREATE TABLE lub CREATE MATERIALIZED VIEW .
Aby dodać ograniczenie sprawdzania do tabeli usługi Delta Lake, użyj polecenia ALTER TABLE po utworzeniu tabeli.
Składnia
Użyj klauzuli table_constraint
, aby zdefiniować ograniczenia obejmujące wiele kolumn lub oddzielić składnię od definicji kolumny.
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 ] [...]
}
}
}
Użyj klauzuli column_constraint
, aby zdefiniować ograniczenia specyficzne dla definicji pojedynczej kolumny.
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 }
Aby uzyskać zgodność z niestandardowymi dialektami SQL, można określić ENABLE NOVALIDATE
zamiast NOT ENFORCED DEFERRABLE INITIALLY DEFERRED
.
Parametry
CONSTRAINT
nameOpcjonalnie 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 katalog aparatu Unity usługi Databricks SQL Databricks Runtime 11.3 LTS i nowszy
Dodaje ograniczenie klucza podstawowego informacyjnego do tabeli lub zmaterializowanego widoku. Tabela lub zmaterializowany widok może mieć co najwyżej jeden klucz podstawowy.
Kolumny klucza podstawowego są niejawnie zdefiniowane jako
NOT NULL
.Ograniczenia klucza podstawowego nie są obsługiwane w przypadku tabel w wykazie
hive_metastore
.-
Kolumna tabeli tematu lub zmaterializowany widok. Nazwy kolumn nie mogą być powtarzane.
TIMESERIES
Dotyczy: Databricks SQL Databricks Runtime 13.3 LTS i nowsze
Opcjonalnie oznacza składnik kolumny klucza podstawowego jako reprezentujący czasowniki.
-
PRIMARY KEY [ constraint_option ] [...]
Dodaje ograniczenie klucza podstawowego z jedną kolumną do tabeli lub zmaterializowanego widoku przy użyciu powyższej definicji kolumny klucza.
Jest to
column_constraint
równoważnetable_constraint
PRIMARY KEY (key_column) [ constraint_option ] [...]
FOREIGN KEY (foreign_key_column [, ...] ) REFERENCES parent_table [ ( parent_column [, ...] ) ] foreign_key_option
Dotyczy: Tylko katalog aparatu Unity usługi Databricks SQL Databricks Runtime 11.3 LTS i nowszy
Dodaje ograniczenie klucza obcego informacyjnego (więzów integralności) do tabeli lub zmaterializowanego widoku.
Ograniczenia klucza obcego nie są obsługiwane w przypadku tabel w wykazie
hive_metastore
.Ograniczenia klucza obcego, które różnią się tylko permutacją kolumn klucza obcego, są niedozwolone.
-
Kolumna tabeli tematu lub zmaterializowany widok. Nazwy kolumn nie mogą być powtarzane. Typ danych każdej kolumny musi być zgodny z typem pasującego
parent_column
elementu . Liczba kolumn musi być zgodna zparent_column
liczbą s. Dwa klucze obce nie mogą współdzielić identycznego zestawu kolumn kluczy obcych. -
Określa tabelę lub zmaterializowany widok, do których odwołuje się klucz obcy. Tabela musi mieć zdefiniowane
PRIMARY KEY
ograniczenie i musi miećSELECT
uprawnienia do tabeli. -
Kolumna w tabeli nadrzędnej lub zmaterializowany widok, który jest częścią klucza podstawowego. Wszystkie kolumny klucza podstawowego tabeli nadrzędnej lub zmaterializowanego widoku muszą być wymienione.
Jeśli kolumny nadrzędne nie są wyświetlane, są określone przez kolejność podaną
PRIMARY KEY
w definicji. FOREIGN KEY REFERENCES parent_table [ ( parent_column ) ] foreign_key_option
Dodaje ograniczenie klucza obcego z jedną kolumną do tabeli lub zmaterializowanego widoku przy użyciu powyższej definicji kolumny klucza obcego.
Jest to
column_constraint
równoważnetable_constraint
FOREIGN KEY ( foreign_key_column ) REFERENCES parent_table [ ( parent_column ) ] foreign_key_option
-
constraint_option
Wyś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 ENFORCED
Usługa Azure Databricks nie podejmuje żadnych działań w celu wymuszenia jej dla istniejących lub nowych wierszy.
DEFERRABLE
Wymuszanie ograniczenia można odroczyć.
INITIALLY DEFERRED
Wymuszanie ograniczeń jest odroczone.
NORELY
lubRELY
Dotyczy: Databricks SQL Databricks Runtime 14.2 i nowsze w przypadku
PRIMARY KEY
ograniczeńDotyczy: Środowisko Databricks Runtime w wersji 15.4 lub nowszej dla
FOREIGN KEY
ograniczeńJeś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_option
Wyś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 FULL
Aby ograniczenie było uznawane za prawdziwe, wszystkie wartości kolumn muszą mieć wartość
NOT NULL
.ON UPDATE NO ACTION
Jeśli element nadrzędny
PRIMARY KEY
zostanie zaktualizowany, usługa Azure Databricks nie podejmuje żadnych działań w celu ograniczenia aktualizacji ani zaktualizowania klucza obcego.ON DELETE NO ACTION
Jeśli wiersz nadrzędny zostanie usunięty, usługa Azure Databricks nie podejmuje żadnych działań w celu ograniczenia akcji, zaktualizowania klucza obcego lub usunięcia 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. Proces pozyskiwania może zapewnić taką pewność lub można uruchomić kontrole względem danych.
Przykłady
-- 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);