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.
Azure Databricks suporta cláusulas padrão de gestão de restrições SQL:
- Restrições impostas verificam a integridade dos dados antes de adicionar linhas a uma tabela.
- Restrições informacionais (chave primária, chave estrangeira e restrições únicas) definem relações entre campos em tabelas e não são aplicadas.
Todas as restrições no Azure Databricks exigem Delta Lake.
Para um conceito relacionado em Lakeflow Spark Declarative Pipelines, veja Gerir a qualidade dos dados com expectativas de pipeline.
Restrições impostas
Quando uma restrição é violada, a transação falha com um erro. O Azure Databricks suporta dois tipos de restrições:
-
NOT NULL: indica que os valores em colunas específicas não podem ser nulos. -
CHECK: indica que uma expressão booleana especificada deve ser verdadeira para cada linha de entrada.
Note
Adicionar uma restrição melhora o protocolo de escritor de tabela se a versão atual for inferior a 3. Isto pode afetar a compatibilidade com clientes externos da Delta Lake. Consulte Compatibilidade de recursos e protocolos do Delta Lake.
NOT NULL restrição
Ao criar uma tabela, especifique NOT NULL restrições no esquema. Para eliminar ou adicionar NOT NULL restrições, use o ALTER TABLE ... ALTER COLUMN comando:
CREATE TABLE people10m (
id INT NOT NULL,
firstName STRING,
middleName STRING NOT NULL,
lastName STRING,
gender STRING,
birthDate TIMESTAMP,
ssn STRING,
salary INT
);
ALTER TABLE people10m ALTER COLUMN middleName DROP NOT NULL;
ALTER TABLE people10m ALTER COLUMN ssn SET NOT NULL;
Azure Databricks verifica se todas as linhas existentes satisfazem a restrição antes de adicionar uma restrição NOT NULL a uma tabela.
Se especificar uma restrição de NOT NULL numa coluna aninhada dentro de uma struct, a struct mãe também não deverá ser nula. Colunas aninhadas dentro de tipos de array ou mapa não aceitam restrições NOT NULL.
Ver CREATE TABLE [USING] e ALTER TABLE ALTER COLUMN.
CHECK restrição
Gerir restrições CHECK com os comandos ALTER TABLE ADD CONSTRAINT e ALTER TABLE DROP CONSTRAINT.
ALTER TABLE ADD CONSTRAINT verifica que todas as linhas existentes satisfazem a restrição antes de a adicionar à tabela.
As seguintes restrições aplicam-se às condições de verificação:
- Uma
CHECKexpressão de restrição pode usar quaisquer funções SQL no Spark que devolvam sempre o mesmo resultado quando recebem os mesmos valores de argumento, exceto os seguintes tipos de funções:- Funções definidas pelo utilizador.
- Funções de agregação.
- Funções de janela.
- Funções que retornam várias linhas.
Adicionar a uma tabela já existente
CREATE TABLE people10m (
id INT,
firstName STRING,
middleName STRING,
lastName STRING,
gender STRING,
birthDate TIMESTAMP,
ssn STRING,
salary INT
);
ALTER TABLE people10m ADD CONSTRAINT dateWithinRange CHECK (birthDate > '1900-01-01');
ALTER TABLE people10m DROP CONSTRAINT dateWithinRange;
Consulte ALTER TABLE ADD CONSTRAINT e ALTER TABLE DROP CONSTRAINT.
Visualizar propriedades da tabela de restrições de verificação
Use os DESCRIBE DETAIL comandos e SHOW TBLPROPERTIES para ver as restrições de CHECK uma tabela.
ALTER TABLE people10m ADD CONSTRAINT validIds CHECK (id > 1 and id < 99999999);
DESCRIBE DETAIL people10m;
SHOW TBLPROPERTIES people10m;
Remover restrições de verificação
No Databricks Runtime 15.4 LTS e superiores, use o comando DROP FEATURE para remover restrições de verificação de uma tabela e reverter o protocolo da tabela para uma versão anterior.
Consulte Remover uma funcionalidade da tabela Delta Lake e fazer downgrade do protocolo da tabela.
Declarar chave primária, chave estrangeira e restrições únicas
A chave primária, a chave estrangeira e as restrições únicas são apenas informativas e não são aplicadas. Podem melhorar o desempenho através de otimizações de consultas.
- Chave primária e chave estrangeira: disponível para tabelas Unity Catalog e Delta Lake em Databricks Runtime 13.3 LTS e superiores. GA no Databricks Runtime 15.2 e superiores. As chaves externas devem referenciar uma chave primária ou uma restrição única noutra tabela.
-
Exclusivo: disponível em Pré-visualização pública para o Unity Catalog e as tabelas Delta Lake no Databricks SQL e no Databricks Runtime 18.2 e posteriores. Uma tabela pode ter múltiplas restrições únicas. Chaves estrangeiras podem referenciar uma coluna única usando
REFERENCES parent_table(unique_col). Colunas únicas podem ser anuláveis porqueNULLos valores são tratados como distintos uns dos outros.
Consulte o information_schema, use DESCRIBE TABLE EXTENDED, ou use SHOW CREATE TABLE para obter detalhes sobre como as restrições são aplicadas num dado catálogo.
Adicionar a novas tabelas
Declare chaves primárias, chaves externas e restrições únicas como parte da cláusula de especificação da tabela durante a criação da tabela:
CREATE TABLE T(pk1 INTEGER NOT NULL, pk2 INTEGER NOT NULL,
CONSTRAINT t_pk PRIMARY KEY(pk1, pk2));
CREATE TABLE S(pk INTEGER NOT NULL PRIMARY KEY,
fk1 INTEGER, fk2 INTEGER,
CONSTRAINT s_t_fk FOREIGN KEY(fk1, fk2) REFERENCES T);
CREATE TABLE U(id INTEGER NOT NULL, email STRING NOT NULL,
CONSTRAINT u_uq_email UNIQUE(email));
As declarações CTAS não suportam esta cláusula de restrição.
Adicionar às tabelas existentes
Para adicionar restrições às tabelas existentes:
ALTER TABLE T ADD CONSTRAINT t_pk PRIMARY KEY(pk1, pk2);
ALTER TABLE S ADD CONSTRAINT s_t_fk FOREIGN KEY(fk1, fk2) REFERENCES T;
ALTER TABLE U ADD CONSTRAINT u_uq_email UNIQUE(email);