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 ou uma chave estrangeira informativa como parte de uma instrução CREATE TABLE ou CREATE MATERIALIZED VIEW.
Para adicionar uma restrição de verificação a uma tabela Delta Lake, use o comando ALTER TABLE após a criação da tabela.
Sintaxe
Use a cláusula table_constraint para definir restrições que abrangem diversas colunas ou para separar a sintaxe da definição de coluna.
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 ] [...]
}
}
}
Use a cláusula column_constraint para definir restrições específicas a uma única definição de coluna.
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 }
Para compatibilidade com dialetos SQL não padrão, especifique ENABLE NOVALIDATE em vez de NOT ENFORCED DEFERRABLE INITIALLY DEFERRED.
Parâmetros
CONSTRAINTnomeEspecifica 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:
SQL do Databricks
Databricks Runtime 11.3 LTS e versões posteriores
Somente Catálogo do UnityAdiciona uma restrição de chave primária informativa à tabela ou exibição materializada. Uma tabela ou exibição materializada pode ter no máximo uma chave primária.
As colunas de chave primária são definidas implicitamente como
NOT NULL.As restrições de chave primária não têm suporte para tabelas no catálogo
hive_metastore.-
Uma coluna da tabela de assunto ou exibição materializada. Os nomes de colunas não devem ser repetidos.
TIMESERIESAplica-se a:
SQL do Databricks
Databricks Runtime 13.3 LTS e versões posterioresOpcionalmente, rotula o componente de coluna de chave primária como representando uma série de horários.
-
PRIMARY KEY [ constraint_option ] [...]Adiciona uma restrição de chave primária de coluna única à tabela ou à exibição materializada, usando a definição de coluna de chave anterior.
Esse
column_constrainté equivalente aotable_constraintPRIMARY KEY (key_column) [ constraint_option ] [...]FOREIGN KEY (foreign_key_column [, ...] ) REFERENCES parent_table [ ( parent_column [, ...] ) ] foreign_key_optionAplica-se a:
SQL do Databricks
Databricks Runtime 11.3 LTS e versões posteriores
Somente Catálogo do UnityAdiciona uma restrição de chave estrangeira informativa (integridade referencial) à tabela ou à exibição materializada.
As restrições de chave estrangeira não têm suporte para tabelas no catálogo
hive_metastore.Não são permitidas restrições de chave estrangeira que diferem somente na permutação das colunas de chave estrangeira.
-
Uma coluna da tabela de assunto ou exibição materializada. Os nomes de 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 tabela ou a exibição materializada à qual a chave estrangeira se refere. A tabela deve ter uma restrição de
PRIMARY KEYdefinida e você deve ter o privilégioSELECTna tabela. -
Uma coluna na tabela pai ou na exibição materializada que faz parte de sua chave primária. Todas as colunas de chave primária da tabela pai ou do modo de exibição materializado devem ser listadas.
Se as colunas pai não estiverem listadas, elas serão especificadas pela ordem fornecida na definição
PRIMARY KEY. FOREIGN KEY REFERENCES parent_table [ ( parent_column ) ] foreign_key_optionAdiciona uma restrição de chave estrangeira de coluna única à tabela ou à exibição materializada, usando a definição de coluna de chave estrangeira anterior.
Esse
column_constrainté equivalente aotable_constraintFOREIGN KEY ( foreign_key_column ) REFERENCES parent_table [ ( parent_column ) ] foreign_key_option
-
opção_de_restrição
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 ENFORCEDO Azure Databricks não executa nenhuma ação para aplicá-la a linhas existentes ou novas.
DEFERRABLEA imposição da restrição pode ser adiada.
INITIALLY DEFERREDA imposição da restrição foi adiada.
NORELYouRELYAplica-se a:
Databricks SQL
Databricks Runtime 14.2 e superior às restrições de PRIMARY KEYAplica-se a:
Databricks SQL
Databricks Runtime 15.4 e versões posteriores para restriçõesSe
RELY, o Azure Databricks talvez explore a restrição para reescrever e otimizar 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. As otimizações de consulta associadas aoRELYcomando exigem que as consultas sejam executadas na computação habilitada para Photon. Confira O que é o Photon?.O padrão é
NORELY.
opção_de_chave_estrangeira
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 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 realizará nenhuma ação para restringir a atualização ou atualizar a chave estrangeira.ON DELETE NO ACTIONSe 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
-- 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);