Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:
Databricks SQL
Databricks Runtime
Добавляет информационный первичный ключ, информационный внешний ключ или информационное уникальное ограничение в рамках или CREATE MATERIALIZED VIEW инструкцииCREATE TABLE.
Чтобы добавить ограничение проверки в таблицу Delta Lake, используйте ALTER TABLE после создания таблицы.
Синтаксис
Используйте предложение table_constraint, чтобы определить ограничения, охватывающие несколько столбцов или разделяющие синтаксис от определения столбца.
table_constraint
{ [ CONSTRAINT name ]
{ PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ] |
UNIQUE ( key_column [, ...] ) [ constraint_option [...] ] |
{ FOREIGN KEY ( foreign_key_column [, ...] )
REFERENCES parent_table [ ( parent_column [, ...] ) ]
[ foreign_key_option | constraint_option ] [...]
}
}
}
Используйте предложение column_constraintдля определения ограничений, характерных для определения одного столбца.
column_constraint
{ [ CONSTRAINT name ]
{ PRIMARY KEY [ constraint_option ] [...] |
UNIQUE [ 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 }
Для совместимости с нестандартными диалектами SQL можно указать ENABLE NOVALIDATE вместо NOT ENFORCED DEFERRABLE INITIALLY DEFERRED.
Параметры
CONSTRAINTимяПри необходимости задает имя ограничения. Имя должно быть уникальным в схеме. Если имя не указано, Azure Databricks создаст его.
PRIMARY KEY( key_column [ TIMESERIES] [, ...] ) [ constraint_option [...] ]применяется:
Databricks SQL
Databricks Runtime 11.3 LTS и более поздней
только Unity CatalogДобавляет информационное ограничение первичного ключа в таблицу или материализованное представление. Таблица или материализованное представление может иметь не более одного первичного ключа.
Столбцы первичного ключа неявно определяются как
NOT NULL.Ограничения первичного ключа не поддерживаются для таблиц в каталоге
hive_metastore.-
Столбец таблицы темы или материализованного представления. Имена столбцов не должны повторяться.
TIMESERIESОбласть применения:
Databricks SQL
Databricks Runtime 13.3 LTS и вышеМетка компонента первичного ключевого столбца может указывать, что он представляет временной ряд.
-
PRIMARY KEY [ constraint_option ] [...]Добавляет ограничение первичного ключа одного столбца в таблицу или материализованное представление, используя предыдущее определение ключевого столбца.
Этот
column_constraintравносиленtable_constraint.PRIMARY KEY (key_column) [ constraint_option ] [...]UNIQUE ( key_column [, ...] ) [ constraint_option [...] ]Применяется к:
Databricks SQL
Databricks Runtime 18.2 и выше
каталог Unity.Добавляет информационное уникальное ограничение в таблицу. Таблица может иметь несколько уникальных ограничений.
Уникальные ограничения не поддерживаются для таблиц в каталоге
hive_metastore.Столбцы в
UNIQUEограничении могут иметь значение NULL, в том числе если ограничение ссылается на внешний ключ.NULLЗначения вUNIQUEстолбцах обрабатываются как отличные друг от друга, поэтому повторяющиесяNULLзначения не нарушают семантикуUNIQUEограничения.-
Столбец таблицы темы. Имена столбцов не должны повторяться.
-
UNIQUE [ constraint_option ] [...]Добавляет в таблицу уникальное ограничение одного столбца, используя предыдущее определение ключевого столбца.
Этот
column_constraintравносиленtable_constraint.UNIQUE (key_column) [ constraint_option ] [...]FOREIGN KEY (foreign_key_column [, ...] ) REFERENCES parent_table [ ( parent_column [, ...] ) ] foreign_key_optionприменяется:
Databricks SQL
Databricks Runtime 11.3 LTS и более поздней
только Unity CatalogДобавляет информационное ограничение внешнего ключа (целостность ссылок) в таблицу или материализованное представление.
Ограничения внешнего ключа не поддерживаются для таблиц в каталоге
hive_metastore.Ограничения внешнего ключа, которые отличаются только в перемутации столбцов внешнего ключа, запрещены.
-
Столбец таблицы темы или материализованного представления. Имена столбцов не должны повторяться. Тип данных каждого столбца должен соответствовать типу соответствующего
parent_column. Количество столбцов должно соответствовать количествуparent_columns. Два внешних ключа не могут иметь один и тот же набор столбцов внешнего ключа. -
Указывает таблицу или материализованное представление, на которое ссылается внешний ключ. Таблица должна иметь определенное
PRIMARY KEYограничение или в Databricks Runtime 18.2 и более поздних версиях, определенноеUNIQUEограничение, и необходимо иметьSELECTпривилегии в таблице. -
Столбец в родительской таблице или материализованном представлении, который является частью его первичного ключа или в Databricks Runtime 18.2 и выше, часть уникального ограничения. Все столбцы первичного ключа или уникальные столбцы ограничений родительской таблицы или материализованного представления должны быть перечислены.
Если родительские столбцы не указаны, они указываются порядком, указанным в определении
PRIMARY KEY. FOREIGN KEY REFERENCES parent_table [ ( parent_column ) ] foreign_key_optionДобавляет ограничение внешнего ключа для одного столбца в таблицу или материализованное представление, используя предыдущее определение этого столбца.
Этот
column_constraintравносиленtable_constraint.FOREIGN KEY ( foreign_key_column ) REFERENCES parent_table [ ( parent_column ) ] foreign_key_option
-
вариант_ограничения
Выводит свойства ограничений. Все свойства являются необязательными, но подразумеваются по умолчанию. Каждое свойство может быть указано не более одного раза.
NOT ENFORCEDAzure Databricks не выполняет никаких действий, чтобы применить его для существующих или новых строк.
DEFERRABLEПринудительное применение ограничений может быть отложено.
INITIALLY DEFERREDПринудительное применение ограничений откладывается.
NORELYилиRELYОбласть применения:
Databricks SQL
Databricks Runtime 14.2 и более поздних версий для PRIMARY KEYограниченийприменимо к:
Databricks SQL
Databricks Runtime 15.4 и более поздние версии для ограничений FOREIGN KEYПрименяется к:
Databricks SQL
Databricks Runtime 18.2 и более поздних версий для UNIQUEограниченийЕсли
RELY, то Azure Databricks может использовать ограничение для перезаписи и оптимизации запросов. Это ответственность пользователя за обеспечение удовлетворения ограничения. Использование ограничения, которое не удовлетворено, может привести к неправильным результатам запроса. Оптимизации запросов, связанные с командойRELY, требуют выполнения запросов на вычислительных ресурсах с поддержкой Photon. См. статью " Что такое Фотон?".Значение по умолчанию —
NORELY.
вариант_внешнего_ключа
Выводит свойства, относящиеся к ограничениям внешнего ключа. Все свойства являются необязательными, но подразумеваются по умолчанию. Каждое свойство может быть указано не более одного раза.
MATCH FULLЧтобы ограничение считалось истинным, все значения столбцов должны быть
NOT NULL.ON UPDATE NO ACTIONЕсли родительский объект
PRIMARY KEYобновлен, Azure Databricks не предпринимает никаких действий, чтобы ограничить обновление или обновить внешний ключ.ON DELETE NO ACTIONЕсли родительская строка удалена, Azure Databricks не принимает никаких действий для ограничения действия, обновления внешнего ключа или удаления зависимой строки.
Внимание
Azure Databricks не применяет первичный ключ, внешний ключ или уникальные ограничения. Подтвердите ограничения ключей перед добавлением первичного ключа, внешнего ключа или уникального ограничения. Процесс приема может обеспечить такую гарантию, или же вы можете выполнить проверки данных.
Примеры
-- 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);
-- Create a table with a column unique constraint
> CREATE TABLE person_contacts(first_name STRING NOT NULL, last_name STRING NOT NULL,
nickname STRING UNIQUE);
-- Create a table with a multi-column unique constraint
> CREATE TABLE person_accounts(first_name STRING NOT NULL, last_name STRING NOT NULL, account_id STRING,
CONSTRAINT person_accounts_uq UNIQUE(first_name, last_name));
-- Create a table with a foreign key that references a unique column
> CREATE TABLE pet_tags(tag STRING NOT NULL, owner_nickname STRING,
CONSTRAINT pet_tags_owner_fk FOREIGN KEY (owner_nickname) REFERENCES person_contacts(nickname));