Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: SQL do Databricks
Databricks Runtime
Adiciona uma chave primária informativa, chave estrangeira informativa ou uma restrição de verificação imposta a uma tabela Delta Lake existente, visão materializada ou tabela de streaming.
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_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, especifique ENABLE NOVALIDATE
em vez de NOT ENFORCED DEFERRABLE INITIALLY DEFERRED
.
Parâmetros
check_constraint
Define uma restrição de verificação para uma relação.
CONSTRAINT
nomeEspecifica um nome para a restrição. O nome deve ser exclusivo dentro da relação.
CHECK (
condição)
A
DEFAULT COLLATION
relação deve estarUTF8_BINARY
no momento em que a restrição é adicionada.condition
deve ser uma expressão determinística que retorna umBOOLEAN
.condition
pode ser composto por literais, identificadores de coluna dentro da relação e funções ou operadores SQL internos determinísticos, exceto:- Funções de agregação
- Funções de janela analíticas
- Classificação de funções de janela
- Funções geradoras com valor de tabela
-
STRING
colunas com ordenações diferentes deUTF8_BINARY
Além disso,
condition
não deve conter nenhuma subconsulta.Para que uma
CHECK
restrição seja satisfeita no Azure Databricks, ela deve ser avaliada comotrue
.O Delta Lake analisa 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_constraint
Importante
Esse recurso está em uma versão prévia.
Aplica-se a:
SQL do Databricks
Databricks Runtime 11.3 LTS e versões posteriores
Define uma chave primária informativa ou uma restrição de chave estrangeira informativa para uma relação. Restrições de chave informativa não são impostas, mas podem melhorar o desempenho dando suporte a otimizações de consulta.
CONSTRAINT
nomeEspecifica opcionalmente um nome para a restrição. O nome deve ser exclusivo no esquema. Se nenhum nome for fornecido, o Azure Databricks gerará um.
PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ]
Aplica-se a:
Somente Catálogo do Unity
Adiciona 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_metastore
catálogo.-
Uma coluna da relação de assunto definida como
NOT NULL
. Os nomes de colunas não devem ser repetidos. TIMESERIES
Aplica-se a:
SQL do Databricks
Databricks Runtime 13.3 LTS e versões posteriores
Opcionalmente, rotula o componente de coluna de chave primária como representando uma série de horários.
FOREIGN KEY ( foreign_key_column [, ...] ) REFERENCES parent_relation [ ( parent_column [, ...] ) ] foreign_key_option
Aplica-se a:
Somente Catálogo do Unity
Adiciona uma restrição de chave estrangeira (integridade referencial) à relação.
As restrições de chave estrangeira não são suportadas para relações no catálogo
hive_metastore
.-
Uma coluna da relação de assunto. Os nomes de colunas não devem ser repetidos. O tipo de dados de cada coluna deve corresponder ao tipo do
parent_column
correspondente. 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 KEY
e você deve ter oSELECT
privilégio na relação. -
Uma coluna na relação pai que faz parte de sua chave primária. Todas as colunas de chave primária da relação pai devem ser listadas.
Quando as colunas pai não são listadas, elas são especificadas implicitamente na ordem fornecida na definição
PRIMARY KEY
.
Não são permitidas restrições de chave estrangeira que diferem somente na permutação das colunas de chave estrangeira.
-
constraint_option
Lista as propriedades das restrições. Todas as propriedades são opcionais, mas são implícitas por padrão. Cada propriedade pode ser especificada uma vez no máximo.
NOT ENFORCED
O Azure Databricks não executa nenhuma ação para aplicá-la a linhas existentes ou novas.
DEFERRABLE
A imposição da restrição pode ser adiada.
INITIALLY DEFERRED
A imposição da restrição foi adiada.
NORELY
ouRELY
Aplica-se a:
Databricks SQL
Databricks Runtime 14.2 e superior às restrições de
PRIMARY KEY
Aplica-se a:
Databricks SQL
Databricks Runtime 15.4 e versões posteriores para restrições
Se
RELY
, o Azure Databricks poderá explorar a restrição para reescrever consultas. É responsabilidade do usuário garantir que a restrição seja atendida. Depender de uma restrição que não está satisfeita pode levar a resultados de consulta incorretos.O padrão é
NORELY
.
foreign_key_option
Lista as propriedades específicas de restrições de chave estrangeira. Todas as propriedades são opcionais, mas são implícitas por padrão. Cada propriedade pode ser especificada uma vez no máximo.
MATCH FULL
Para que a restrição seja considerada verdadeira, todos os valores de coluna devem ser
NOT NULL
.ON UPDATE NO ACTION
Se o
PRIMARY KEY
pai for atualizado, o Azure Databricks não realizará nenhuma ação para restringir a atualização ou atualizar a chave estrangeira.ON DELETE NO ACTION
Se a linha pai for excluída, o Azure Databricks não realizará nenhuma ação para restringir a atividade, atualizar a chave estrangeira ou excluir a linha dependente.
Importante
O Azure Databricks não impõe restrições de chave primária ou de 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 é possível executar verificações em 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);