Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:
Databricks SQL
Databricks Runtime
Adiciona uma chave primária informacional , chave externa informativa , restrição única informacional ou uma restrição de verificação imposta a uma tabela Delta Lake existente.
Sintaxe
ADD [check_constraint | key_constraint ]
check_constraint
CONSTRAINT name CHECK ( condition )
key_constraint
{ [ CONSTRAINT name ]
{
PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ] |
UNIQUE ( key_column [, ...] ) [ 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 }
Para compatibilidade com dialetos SQL não padrão, você pode especificar ENABLE NOVALIDATE em vez de NOT ENFORCED DEFERRABLE INITIALLY DEFERRED.
Parâmetros
check_constraintDefine uma restrição de verificação para uma relação.
CONSTRAINTNomeEspecifica um nome para a restrição. O nome deve ser exclusivo dentro da relação.
CHECK (condição)O
DEFAULT COLLATIONda relação deve estarUTF8_BINARYno momento em que a restrição é adicionada.conditiondeve ser uma expressão determinística que retorne aBOOLEAN.conditionpode ser composto por literais, identificadores de coluna dentro da relação, e funções internas e operadores determinísticos de SQL, exceto:- Funções agregadas
- Funções de janela analítica
- Funções da janela de classificação
- Funções geradoras de valores de tabela
-
STRINGcolunas com classificações diferentes deUTF8_BINARY
Também
conditionnão deve conter nenhuma subconsulta.Para que uma restrição de
CHECKseja satisfeita no Azure Databricks, ela deve ser avaliada paratrue.O Delta Lake verifica a validade da restrição de verificação em relação a dados novos e existentes. Se qualquer linha existente violar a restrição, um erro será gerado.
key_constraintImportante
Esta funcionalidade está em Pré-visualização Pública.
Aplica-se a:
Databricks SQL
Databricks Runtime 11.3 LTS e superiorDefine uma chave primária informacional , chave estrangeira informativa ou restrição única informacional para uma relação. As restrições de chave informativa não são impostas, mas podem melhorar o desempenho ao apoiar otimizações de consultas .
CONSTRAINTNomeOpcionalmente, especifica um nome para a restrição. O nome deve ser exclusivo dentro do esquema. Se nenhum nome for fornecido, o Azure Databricks gerará um.
PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ]Aplica-se a:
somente para o Catálogo UnityAdiciona uma restrição de chave primária à relação. Uma relação pode ter, no máximo, uma chave primária.
Não há suporte para restrições de chave primária para relações no
hive_metastorecatálogo.-
Uma coluna da relação de assunto definida como
NOT NULL. Os nomes das colunas não devem ser repetidos. TIMESERIESAplica-se a:
Databricks SQL
Databricks Runtime 13.3 LTS e superiorOpcionalmente, rotula o componente de coluna de chave primária como representando uma série temporal.
UNIQUE ( key_column [, ...] ) [ constraint_option [...] ]Aplica-se a:

Runtime 18.2 e superiores
sim Catálogo Unity apenasAdiciona uma restrição única à relação. Uma relação pode ter múltiplas restrições únicas.
Colunas numa
UNIQUErestrição podem ser anuláveis.NULLOs valores nasUNIQUEcolunas são tratados como distintos uns dos outros, pelo que valores duplicadosNULLnão violam a semântica de umaUNIQUErestrição.Restrições únicas não são suportadas para relações no
hive_metastorecatálogo.-
Uma coluna da relação com o assunto. Os nomes das colunas não devem ser repetidos.
-
FOREIGN KEY ( foreign_key_column [, ...] ) REFERENCES parent_relation [ ( parent_column [, ...] ) ] foreign_key_optionAplica-se a:
somente para o Catálogo UnityAdiciona uma restrição de chave estrangeira (integridade referencial) à relação.
Não há suporte para restrições de chave estrangeira para relações no
hive_metastorecatálogo.-
Uma coluna da relação com o assunto. Os nomes das colunas não devem ser repetidos. O tipo de dados de cada coluna deve corresponder ao tipo do
parent_columncorrespondente. O número de colunas deve corresponder ao número deparent_columns. Duas chaves estrangeiras não podem compartilhar um conjunto idêntico de colunas de chave estrangeira. -
Especifica a relação à qual a chave estrangeira se refere. A relação deve ter uma restrição definida
PRIMARY KEYou, no Databricks Runtime 18.2 e superiores, uma restrição definidaUNIQUE, e deve ter esseSELECTprivilégio sobre a relação. -
Uma coluna na relação pai que faz parte da sua chave primária ou, no Databricks Runtime 18.2 e superiores, parte de uma restrição única. Todas as colunas-chave primárias ou colunas de restrição única da relação pai devem ser listadas.
Se as colunas pai não estiverem listadas, presume-se que estejam especificadas na ordem dada na definição de
PRIMARY KEY.
Restrições de chave estrangeira que diferem apenas na permutação das colunas de chave estrangeira não são permitidas.
-
constraint_optionLista 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 ENFORCEDO Azure Databricks não toma medidas para aplicá-lo a linhas novas ou existentes.
DEFERRABLEA aplicação da restrição pode ser adiada.
INITIALLY DEFERREDA imposição de restrições é adiada.
NORELYouRELYAplica-se a:
Databricks SQL
Databricks Runtime 14.2 e superior para PRIMARY KEYrestriçõesAplica-se a:
Databricks SQL
Databricks Runtime 15.4 e versões superiores para restrições de FOREIGN KEYAplica-se a:
SQL
sim Databricks Runtime 18.2 e superiores para UNIQUErestriçõesCaso
RELYesteja presente, Azure Databricks pode utilizar a restrição para reescrever consultas. É da responsabilidade do utilizador garantir que o constrangimento é cumprido. Confiar em uma restrição que não é satisfeita pode levar a resultados de consulta incorretos.A predefinição é
NORELY.
foreign_key_optionLista 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 FULLPara que a restrição seja considerada verdadeira, todos os valores de coluna devem ser
NOT NULL.ON UPDATE NO ACTIONSe o
PRIMARY KEYpai for atualizado, o Azure Databricks não tomará medidas para restringir a atualização nem atualizar a chave estrangeira.ON DELETE NO ACTIONSe a linha pai for excluída, o Azure Databricks não tomará nenhuma ação para restringir a ação, atualizar a chave estrangeira ou excluir a linha dependente.
Importante
O Azure Databricks não aplica restrições de chave primária, chave estrangeira ou única. Confirme as restrições da chave antes de adicionar uma chave primária, chave estrangeira ou restrição única. 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);
-- Add a unique constraint
> CREATE TABLE person_emails(first_name STRING NOT NULL, last_name STRING NOT NULL, email STRING);
> ALTER TABLE person_emails ADD CONSTRAINT person_emails_uq UNIQUE(email);