Compartilhar via


Cláusula ADD CONSTRAINT

Aplica-se a: marca de seleção positiva SQL do Databricks marca de seleção positiva Databricks Runtime

Adiciona uma chave primária informativa, uma chave estrangeira informativa 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 ) [ ENFORCED ]

key_constraint
    { [ CONSTRAINT name ]
      {
        PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ] |
        { FOREIGN KEY (foreign_key_column [, ...] )
          REFERENCES parent_table [ ( 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 tabela do Delta Lake.

    • CONSTRAINTname

      Especifica um nome para a restrição. O nome precisa ser exclusivo dentro da tabela. Se nenhum nome for fornecido, o Azure Databricks gerará um.

    • CHECK (condition)

      condition deve ser uma expressão determinística que retorna um BOOLEAN.

      condition pode ser composto por literais, identificadores de coluna dentro da tabela e funções ou operadores determinísticos e internos do SQL, exceto:

      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 como true.

      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:verificação marcada como sim SQL do Databricks marca de seleção positiva Databricks Runtime 11.3 LTS e versões posteriores

    Define uma restrição de chave primária informativa ou de chave estrangeira informativa para uma tabela do Delta Lake.

    • CONSTRAINTname

      Especifica 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:caixa de seleção marcada como sim Somente Catálogo do Unity

      Adiciona uma restrição de chave primária à tabela do Delta Lake. Uma tabela pode ter uma chave primária no máximo.

      As restrições de chave primária não têm suporte para tabelas no catálogo hive_metastore.

    • key_column

      Uma coluna da tabela de assunto definida como NOT NULL. Os nomes de colunas não devem ser repetidos.

    • TIMESERIES

      Aplica-se a:verificação marcada como sim SQL do Databricks verificação marcada como sim 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_table [ ( parent_column [, ...] ) ] foreign_key_option

      Aplica-se a:caixa de seleção marcada como sim Somente Catálogo do Unity

      Adiciona uma restrição de chave estrangeira (integridade referencial) à tabela do Delta Lake.

      As restrições de chave estrangeira não têm suporte para tabelas no catálogo hive_metastore.

      • foreign_key_column

        Uma coluna da tabela 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 de parent_columns. Duas chaves estrangeiras não podem compartilhar um conjunto idêntico de colunas de chave estrangeira.

      • parent_table

        Especifica a tabela à qual a chave estrangeira se refere. A tabela deve ter uma restrição de PRIMARY KEY definida e você deve ter o privilégio SELECT na tabela.

      • parent_column

        Uma coluna na tabela pai que faz parte da chave primária. Todas as colunas de chave primária da tabela 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 ou RELY

        Aplica-se a: marca de seleção positiva Databricks SQL verificação marcada como sim Databricks Runtime 14.2 e superior às restrições de PRIMARY KEY

        Aplica-se a: marca de seleção positiva Databricks Runtime 15.4 e superior às restrições de FOREIGN KEY

        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);