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 klucz główny informacyjny lub klucz obcy informacyjny w ramach instrukcji CREATE TABLE lub CREATE MATERIALIZED VIEW.
Aby dodać ograniczenie sprawdzania do tabeli usługi Delta Lake, użyj 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
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:
Databricks SQL
Databricks Runtime 11.3 LTS i nowsze
tylko Unity CatalogDodaje 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.
TIMESERIESDotyczy:
Databricks SQL
Databricks Runtime 13.3 LTS i nowszeOpcjonalnie oznacza kolumnę klucza podstawowego jako reprezentującą szereg czasowy.
-
PRIMARY KEY [ constraint_option ] [...]Dodaje ograniczenie klucza podstawowego dla pojedynczej kolumny do tabeli lub zmaterializowanego widoku, używając definicji kolumny klucza z poprzedniej sekcji.
Jest to
column_constraintrównoważnetable_constraintPRIMARY KEY (key_column) [ constraint_option ] [...]FOREIGN KEY (foreign_key_column [, ...] ) REFERENCES parent_table [ ( parent_column [, ...] ) ] foreign_key_optionDotyczy:
Databricks SQL
Databricks Runtime 11.3 LTS i nowsze
tylko Unity CatalogDodaje ograniczenie klucza obcego (integralności referencyjnej) 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. Liczba kolumn musi być zgodna z liczbąparent_columns. 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 ograniczenie
PRIMARY KEYi musisz mieć uprawnieniaSELECTw tabeli. -
Kolumna w tabeli nadrzędnej lub w zmaterializowanym widoku, która jest częścią jego klucza głównego. Wszystkie kolumny klucza głównego tabeli nadrzędnej lub zmaterializowanego widoku muszą być wymienione.
Jeśli kolumny nadrzędne nie są wyświetlane, są określone przez kolejność podaną w definicji
PRIMARY KEY. FOREIGN KEY REFERENCES parent_table [ ( parent_column ) ] foreign_key_optionDodaje ograniczenie klucza obcego do pojedynczej kolumny w tabeli lub zmaterializowanym widoku, przy użyciu wcześniejszej definicji kolumny klucza obcego.
Jest to
column_constraintrównoważnetable_constraintFOREIGN 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 ENFORCEDUsługa Azure Databricks nie podejmuje żadnych działań w celu wymuszenia jej 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 i optymalizowania 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. Optymalizacje zapytań skojarzone z poleceniemRELYwymagają uruchamiania zapytań na obliczeniach z obsługą funkcji Photon. Zobacz Co to jest Photon?.Wartość domyślna to
NORELY.
opcja_klucza_obcego
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 FULLAby ograniczenie było uznawane za prawdziwe, wszystkie wartości kolumn muszą być
NOT NULL.ON UPDATE NO ACTIONJeśli element nadrzędny
PRIMARY KEYjest aktualizowany, usługa Azure Databricks nie podejmuje żadnych działań, aby ograniczyć aktualizację ani zaktualizować klucza obcego.ON DELETE NO ACTIONJeś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 ładowania danych może zapewnić taką pewność, lub można zweryfikować dane.
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);