Restrições

As tabelas Delta suportam cláusulas de gestão de restrição SQL padrão que garantem que a qualidade e integridade dos dados adicionados a uma tabela seja verificada automaticamente. Quando um constrangimento é violado, Delta Lake lança um InvariantViolationException sinal de que os novos dados não podem ser adicionados.

São apoiados 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.

Restrição NOT NULL

Especifica NOT NULL constrangimentos no esquema quando cria uma tabela e deixa NOT NULL cair constrangimentos usando o ALTER TABLE CHANGE COLUMN comando.

CREATE TABLE events(
  id LONG NOT NULL,
  date STRING NOT NULL,
  location STRING,
  description STRING
) USING DELTA;

ALTER TABLE events CHANGE COLUMN date DROP NOT NULL;

Pode adicionar NOT NULL restrições a uma tabela Delta existente utilizando o ALTER TABLE CHANGE COLUMN SET NOT NULL comando.

CREATE TABLE events(
  id LONG,
  date STRING,
  location STRING,
  description STRING
) USING DELTA;

ALTER TABLE events CHANGE COLUMN id SET NOT NULL;

Se especificar uma NOT NULL restrição numa coluna aninhada dentro de uma estrutura, a estrutura dos pais também está limitada a não ser nula. No entanto, as colunas aninhadas dentro dos tipos de matriz ou mapa não aceitam NOT NULL restrições.

Para obter informações de referência, consulte CREATE TABLE USING and ALTER TABLE CHANGE COLUMN.

Restrição CHECK

Nota

  • Disponível em Databricks Runtime 7.4 ou superior.
  • No Databricks Runtime 7.3 LTS pode escrever em tabelas com CHECK restrições definidas, mas não pode criar CHECK constrangimentos.

Gere CHECK constrangimentos usando os ALTER TABLE ADD CONSTRAINT ALTER TABLE DROP CONSTRAINT comandos e comandos. ALTER TABLE ADD CONSTRAINT verifica que todas as linhas existentes satisfazem o constrangimento antes de adicioná-lo à mesa.

CREATE TABLE events(
  id LONG NOT NULL,
  date STRING,
  location STRING,
  description STRING
) USING DELTA;

ALTER TABLE events ADD CONSTRAINT dateWithinRange CHECK (date > '1900-01-01');
ALTER TABLE events DROP CONSTRAINT dateWithinRange;

Para obter informações de referência, consulte ALTER TABLE ADD CONSTRAINT e ALTERAR RESTRIÇÃO DE QUEDA DE MESA.

CHECK constrangimentos são propriedades de mesa na saída do DESCRIBE DETAIL e SHOW TBLPROPERTIES comandos.

ALTER TABLE events ADD CONSTRAINT validIds CHECK (id > 1000 and id < 999999);
DESCRIBE DETAIL events;

Constrangimento exibido