Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Область применения:
Databricks SQL
Databricks Runtime
Добавляет информационный первичный ключ, информационный внешний ключ или принудительное ограничение проверки в существующую таблицу Delta Lake.
Синтаксис
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 }
Для совместимости с нестандартными диалектами SQL можно указать ENABLE NOVALIDATE вместо NOT ENFORCED DEFERRABLE INITIALLY DEFERRED.
Параметры
check_constraintОпределяет ограничение проверки для отношения.
CONSTRAINTимяЗадает имя ограничения. Имя должно быть уникальным в связи.
CHECK (условие)Отношение
DEFAULT COLLATIONдолжно бытьUTF8_BINARYк моменту добавления ограничения.conditionдолжно быть детерминированным выражением, возвращающимBOOLEANзначение.conditionможет состоять из литералов, идентификаторов столбцов в отношениях, а также детерминированных встроенных функций и операторов SQL, кроме следующих:- Агрегатные функции
- Аналитические оконные функции
- Функции окна ранжирования
- Функции, генерирующие табличные значения
- столбцы
STRINGс параметрами сортировки, отличными отUTF8_BINARY
Кроме того,
conditionне должен содержать какой-либо вложенный запрос.Чтобы ограничение
CHECKбыло удовлетворено в Azure Databricks, оно должно быть равнымtrue.Delta Lake проверяет допустимость ограничения проверки как для новых, так и для существующих данных. Если любая существующая строка нарушает ограничение, возникает ошибка.
key_constraintВнимание
Эта функция предоставляется в режиме общедоступной предварительной версии.
Область применения:
Databricks SQL
Databricks Runtime 11.3 LTS и вышеОпределяет информационное первичное или информационное ограничение внешнего ключа для отношения. Ограничения информационных ключей не применяются, но могут повысить производительность, поддерживая оптимизацию запросов .
CONSTRAINTимяПри необходимости задает имя ограничения. Имя должно быть уникальным в схеме. Если имя не указано, Azure Databricks создаст его.
PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ]Применимо к:
только в Unity CatalogДобавляет ограничение первичного ключа в отношение. Отношение может иметь не более одного первичного ключа.
Ограничения первичного ключа не поддерживаются для отношений в каталоге
hive_metastore.-
Столбец отношения субъекта, определенного как
NOT NULL. Имена столбцов не должны повторяться. TIMESERIESОбласть применения:
Databricks SQL
Databricks Runtime 13.3 LTS и вышеПри необходимости обозначение компонента столбца первичного ключа как представляющего временной ряд.
FOREIGN KEY ( foreign_key_column [, ...] ) REFERENCES parent_relation [ ( parent_column [, ...] ) ] foreign_key_optionПрименимо к:
только в Unity CatalogДобавляет ограничение внешнего ключа (целостности ссылок) в отношение.
Ограничения внешнего ключа не поддерживаются для отношений в каталоге
hive_metastore.-
Столбец отношения субъекта. Имена столбцов не должны повторяться. Тип данных каждого столбца должен соответствовать типу соответствующего
parent_column. Число столбцов должно соответствовать количествуparent_columns. Два внешних ключа не могут иметь идентичный набор столбцов внешнего ключа. -
Указывает отношение, к котором ссылается внешний ключ. Отношение должно иметь определенное
PRIMARY KEYограничение, и необходимо иметьSELECTпривилегию на отношение. -
Столбец родительского отношения, который является частью его первичного ключа. Все столбцы первичного ключа родительского отношения должны быть перечислены.
Если родительские столбцы не указаны, они подразумеваются в порядке, указанном в определении
PRIMARY KEY.
Ограничения внешнего ключа, которые отличаются только в перемутации столбцов внешнего ключа, запрещены.
-
constraint_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Если
RELY, Azure Databricks может использовать ограничение для перезаписи запросов. Это ответственность пользователя за обеспечение удовлетворения ограничения. Использование ограничения, которое не удовлетворено, может привести к неправильным результатам запроса.Значение по умолчанию —
NORELY.
foreign_key_optionВыводит свойства, относящиеся к ограничениям внешнего ключа. Все свойства являются необязательными, но подразумеваются по умолчанию. Каждое свойство может быть указано не более одного раза.
MATCH FULLЧтобы ограничение считалось истинным, все значения столбцов должны быть
NOT NULL.ON UPDATE NO ACTIONЕсли родитель
PRIMARY KEYобновлен, Azure Databricks не принимает никаких мер для ограничения обновления или изменения внешнего ключа.ON DELETE NO ACTIONЕсли родительская строка удалена Azure Databricks, не выполняет никаких действий, чтобы ограничить действие, обновить внешний ключ или удалить зависимые строки.
Внимание
Azure Databricks не применяет ограничения первичного ключа или внешнего ключа. Подтвердите ограничения ключа перед добавлением первичного или внешнего ключа. Процесс инжеста может обеспечить такую гарантию, или вы можете выполнить проверку данных.
Примеры
-- 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);