Предложение CONSTRAINT
Область применения: Databricks SQL Databricks Runtime
Добавляет информационный первичный ключ или информационный внешний ключ в рамках инструкции CREATE TABLE или CREATE MATERIALIZED VIEW .
Чтобы добавить ограничение проверки в таблицу Delta Lake, используйте инструкцию ALTER TABLE после создания таблицы.
Синтаксис
Воспользуйтесь предложением table_constraint
, чтобы определить ограничения, охватывающие несколько столбцов или отделяющие синтаксис от определения столбца.
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 ] [...]
}
}
}
Воспользуйтесь предложением column_constraint
, чтобы определить ограничения, относящиеся к определению отдельного столбца.
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 |
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 создаст его.
ПЕРВИЧНЫЙ КЛЮЧ ( key_column [ TIMESERIES] [, ...] ) [ constraint_option [...] ]
Область применения: Databricks SQL Databricks Runtime 11.3 LTS и более поздней версии каталога Unity
Добавляет информационное ограничение первичного ключа в таблицу или материализованное представление. Таблица или материализованное представление может иметь не более одного первичного ключа.
Столбцы первичного ключа неявно определяются как
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 ] [...]
FOREIGN KEY (foreign_key_column [, ...] ) REFERENCES parent_table [ ( parent_column [, ...] ) ] foreign_key_option
Область применения: Databricks SQL Databricks Runtime 11.3 LTS и более поздней версии каталога Unity
Добавляет информационное ограничение внешнего ключа (целостность ссылок) в таблицу или материализованное представление.
Ограничения внешнего ключа не поддерживаются для таблиц в каталоге
hive_metastore
.Ограничения внешнего ключа, которые различаются только в перестановке столбцов внешнего ключа, запрещены.
-
Столбец таблицы темы или материализованного представления. Имена столбцов не должны повторяться. Тип данных каждого столбца должен совпадать с типом соответствующего
parent_column
. Число столбцов должно совпадать с числом столбцовparent_column
. Два внешних ключа не могут совместно использовать идентичный набор столбцов внешнего ключа. -
Указывает таблицу или материализованное представление, на которое ссылается внешний ключ. Таблица должна иметь определенное
PRIMARY KEY
ограничение и должна принадлежать этой таблице или материализованному представлению. -
Столбец в родительской таблице или материализованном представлении, который является частью его первичного ключа. Все первичные ключевые столбцы родительской таблицы или материализованного представления должны быть перечислены.
Если родительские столбцы не указаны, они задаются порядком, заданным в определении
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 ENFORCED
Azure Databricks не выполняет никаких действий, чтобы применить его для существующих или новых строк.
DEFERRABLE
Принудительное применение ограничений может быть отложено.
INITIALLY DEFERRED
Принудительное применение ограничений отложено.
NORELY
Azure Databricks не использует ограничение для перезаписи запроса.
вариант_внешнего_ключа
Выводит свойства, относящиеся к ограничениям внешнего ключа. Все свойства являются необязательными, но подразумеваются по умолчанию. Каждое свойство может быть указано не более одного раза.
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);
Связанные статьи
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по