предложение 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 |
{ RELY | NORELY } }
foreign_key_option
{ MATCH FULL |
ON UPDATE NO ACTION |
ON DELETE NO ACTION }
Для совместимости с нестандартными диалектами SQL можно указать ENABLE NOVALIDATE
вместо NOT ENFORCED DEFERRABLE INITIALLY DEFERRED
.
Параметры
CONSTRAINT
nameПри необходимости задает имя ограничения. Имя должно быть уникальным в схеме. Если имя не указано, 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 ] [...]
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_column
s. Два внешних ключа не могут иметь один и тот же набор столбцов внешнего ключа. -
Указывает таблицу или материализованное представление, на которое ссылается внешний ключ. Таблица должна иметь определенное ограничение
PRIMARY KEY
, и вы должны иметь привилегиюSELECT
на таблице. -
Столбец в родительской таблице или материализованном представлении, который является частью его первичного ключа. Все первичные ключевые столбцы родительской таблицы или материализованного представления должны быть перечислены.
Если родительские столбцы не указаны, они указываются порядком, указанным в определении
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
илиRELY
Область применения:
Databricks SQL
Databricks Runtime 14.2 и более поздних версий для
PRIMARY KEY
ограниченийприменимо к:
Databricks SQL
Databricks Runtime 15.4 и более поздние версии для ограничений
FOREIGN KEY
Если
RELY
, Azure Databricks может использовать ограничение для перезаписи запросов. Это ответственность пользователя за обеспечение удовлетворения ограничения. Использование ограничения, которое не удовлетворено, может привести к неправильным результатам запроса.Значение по умолчанию —
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);