Cláusula ADD CONSTRAINT
Aplica-se a: Databricks SQL Databricks Runtime
Adiciona uma chave primária informativa
Sintaxe
ADD [check_constraint | key_constraint ]
check_constraint
CONSTRAINT name CHECK ( condition ) [ ENFORCED ]
key_constraint
{ [ CONSTRAINT name ]
{
PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ] |
{ FOREIGN KEY (foreign_key_column [, ...] )
REFERENCES parent_table [ ( 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 }
Para compatibilidade com dialetos SQL não padrão, você pode especificar ENABLE NOVALIDATE
em vez de NOT ENFORCED DEFERRABLE INITIALLY DEFERRED
.
Parameters
check_constraint
Define uma verificação constraint para um Delta Lake table.
CONSTRAINT
DesignaçãoEspecifica um nome para o constraint. O nome deve ser exclusivo dentro do table. Se nenhum nome for fornecido para um
FOREIGN KEY
ouPRIMARY KEY
constraint, o Azure Databricks generate um.CHECK (
condição)
condition
deve ser uma expressão determinística que retorne aBOOLEAN
.condition
pode ser composto por literais, identificadores column dentro do tablee funções ou operadores SQL internos determinísticos, exceto:- Funções agregadas
- Funções analíticas window
- Classificação window funções
- Table funções geradoras valorizadas
Também
condition
não deve conter nenhuma subconsulta.Para que um
CHECK
constraint seja satisfeito no Azure Databricks, ele deve ser avaliado paratrue
.O Delta Lake verifica a validade do constraint de verificação em relação a dados novos e existentes. Se alguma linha existente violar o constraint um erro será gerado.
key_constraint
Importante
Esta funcionalidade está em Pré-visualização Pública.
Aplica-se a: Databricks SQL Databricks Runtime 11.3 LTS e superior
Define uma chave primária informativa
ou uma chave estrangeira informativa para um Delta Lake . CONSTRAINT
DesignaçãoOpcionalmente, especifica um nome para o constraint. O nome deve ser exclusivo dentro do schema. Se nenhum nome for fornecido, o Azure Databricks generate um.
PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ]
Aplica-se a: Unity apenas Catalog
Adiciona uma chave primária constraint ao Delta Lake table. Um table pode ter, no máximo, uma chave primária.
Não há suporte para restrições de chave primária para tables no
hive_metastore
catalog.-
Uma column do assunto table definida como
NOT NULL
. Os nomes no formato Column não devem ser repetidos. TIMESERIES
Aplica-se a: Databricks SQL Databricks Runtime 13.3 LTS e superior
Opcionalmente, rotula o componente da chave primária column como representativo de uma série temporal.
FOREIGN KEY ( foreign_key_column [, ...] ) REFERENCES parent_table [ ( parent_column [, ...] ) ] foreign_key_option
Aplica-se a: Unity Catalog apenas
Adiciona uma chave estrangeira (integridade referencial) constraint ao Delta Lake table.
Não há suporte para restrições de chave estrangeira para tables no
hive_metastore
catalog.-
Uma column do assunto table. Os nomes Column não devem ser repetidos. O tipo de dados de cada column deve corresponder ao tipo do
parent_column
correspondente. O número de columns deve corresponder ao número deparent_columns
. Duas chaves estrangeiras não podem compartilhar um set idêntico de chave estrangeira columns. -
Especifica o table ao qual a chave estrangeira se refere. O table deve ter um
PRIMARY KEY
constraintdefinido, e deves ter o privilégioSELECT
no table. -
Um column no table pai que faz parte da sua chave primária. Todas as chaves primárias columns do pai table devem ser listadas.
Se os pais columns não estiverem listados, são entendidos como indo pela ordem dada na definição de
PRIMARY KEY
.
Não são permitidas restrições de chave estrangeira que apenas diferem na permutação da chave estrangeira columns.
-
constraint_option
Lista as propriedades das restrições. Todas as propriedades são opcionais, mas implícitas por padrão. Cada propriedade pode, no máximo, ser especificada uma vez.
NOT ENFORCED
O Azure Databricks não toma nenhuma ação para impô-lo para linhas novas ou existentes.
DEFERRABLE
A execução constraint pode ser adiada.
INITIALLY DEFERRED
Constraint execução é adiada.
NORELY
ouRELY
Aplica-se a: Databricks SQL Databricks Runtime 14.2 e superior para restrições
PRIMARY KEY
Aplica-se a: Databricks SQL Databricks Runtime 15.4 e versões superiores para restrições de
FOREIGN KEY
Se
RELY
, a Azure Databricks pode aproveitar o constraint para reescrever consultas. É da responsabilidade do utilizador garantir que o constraint está satisfeito. Confiar em um constraint que não está satisfeito pode levar a resultados de consulta incorretos.A predefinição é
NORELY
.
foreign_key_option
Lista as propriedades específicas para restrições de chave estrangeira. Todas as propriedades são opcionais, mas implícitas por padrão. Cada propriedade pode, no máximo, ser especificada uma vez.
MATCH FULL
Para que a constraint seja considerada verdadeira, todas as columnvalues devem ser
NOT NULL
.ON UPDATE NO ACTION
Se o
PRIMARY KEY
pai for atualizado, o Azure Databricks não tomará nenhuma ação para restringir a chave estrangeira update ou update.ON DELETE NO ACTION
Se a linha pai for excluída, o Azure Databricks não tomará nenhuma ação para restringir a ação, update a chave estrangeira ou excluir a linha dependente.
Importante
O Azure Databricks não impõe restrições de chave primária ou chave estrangeira. Confirme as restrições de chave antes de adicionar uma chave primária ou estrangeira. Seu processo de ingestão pode fornecer essa garantia, ou você pode executar verificações em relação aos seus dados.
Exemplos
-- 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);