Partilhar via


Cláusula ADD CONSTRAINT

Aplica-se a:Marque Sim Databricks SQL Marque Sim Databricks Runtime

Adiciona uma chave primária informativa , chave informativa estrangeira ou um de verificação imposto a um 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, você pode especificar ENABLE NOVALIDATE em vez de NOT ENFORCED DEFERRABLE INITIALLY DEFERRED.

Parameters

  • check_constraint

    Define uma verificação constraint para um Delta Lake table.

    • CONSTRAINT Designação

      Especifica um nome para o constraint. O nome deve ser exclusivo dentro do table. Se nenhum nome for fornecido para um FOREIGN KEY ou PRIMARY KEYconstraint, o Azure Databricks generate um.

    • CHECK ( condição)

      condition deve ser uma expressão determinística que retorne a BOOLEAN.

      condition pode ser composto por literais, identificadores column dentro do tablee funções ou operadores SQL internos determinísticos, exceto:

      Também condition não deve conter nenhuma subconsulta.

      Para que um CHECKconstraint seja satisfeito no Azure Databricks, ele deve ser avaliado para true.

      O Delta Lake verifica a validade do constraint de verificação em relação a dados novos e existentes. Se alguma linha existente violar o constraint um erro será gerado.

  • key_constraint

    Importante

    Esta funcionalidade está em Pré-visualização Pública.

    Aplica-se a:Marque Sim Databricks SQL Marque Sim Databricks Runtime 11.3 LTS e superior

    Define uma chave primária informativa ou uma chave estrangeira informativa para um Delta Lake .

    • CONSTRAINT Designação

      Opcionalmente, especifica um nome para o constraint. O nome deve ser exclusivo dentro do schema. Se nenhum nome for fornecido, o Azure Databricks generate um.

    • PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ]

      Aplica-se a:com marca de verificação Unity apenas Catalog

      Adiciona uma chave primária constraint ao Delta Lake table. Um table pode ter, no máximo, uma chave primária.

      Não há suporte para restrições de chave primária para tables no hive_metastorecatalog.

    • key_column

      Uma column do assunto table definida como NOT NULL. Os nomes no formato Column não devem ser repetidos.

    • TIMESERIES

      Aplica-se a:Marque Sim Databricks SQL Marque Sim Databricks Runtime 13.3 LTS e superior

      Opcionalmente, rotula o componente da chave primária column como representativo de uma série temporal.

    • FOREIGN KEY ( foreign_key_column [, ...] ) REFERENCES parent_table [ ( parent_column [, ...] ) ] foreign_key_option

      Aplica-se a:marcado com sim Unity Catalog apenas

      Adiciona uma chave estrangeira (integridade referencial) constraint ao Delta Lake table.

      Não há suporte para restrições de chave estrangeira para tables no hive_metastorecatalog.

      • foreign_key_column

        Uma column do assunto table. Os nomes Column não devem ser repetidos. O tipo de dados de cada column deve corresponder ao tipo do parent_columncorrespondente. O número de columns deve corresponder ao número de parent_columns. Duas chaves estrangeiras não podem compartilhar um set idêntico de chave estrangeira columns.

      • parent_table

        Especifica o table ao qual a chave estrangeira se refere. O table deve ter um PRIMARY KEYconstraintdefinido, e deves ter o privilégio SELECT no table.

      • parent_column

        Um column no table pai que faz parte da sua chave primária. Todas as chaves primárias columns do pai table devem ser listadas.

        Se os pais columns não estiverem listados, são entendidos como indo pela ordem dada na definição de PRIMARY KEY.

      Não são permitidas restrições de chave estrangeira que apenas diferem na permutação da chave estrangeira columns.

    • constraint_option

      Lista as propriedades das restrições. Todas as propriedades são opcionais, mas implícitas por padrão. Cada propriedade pode, no máximo, ser especificada uma vez.

      • NOT ENFORCED

        O Azure Databricks não toma nenhuma ação para impô-lo para linhas novas ou existentes.

      • DEFERRABLE

        A execução constraint pode ser adiada.

      • INITIALLY DEFERRED

        Constraint execução é adiada.

      • NORELY ou RELY

        Aplica-se a:Marque Sim Databricks SQL Marque Sim Databricks Runtime 14.2 e superior para restrições PRIMARY KEY

        Aplica-se a:marcado com sim Databricks SQL marcado com sim Databricks Runtime 15.4 e versões superiores para restrições de FOREIGN KEY

        Se RELY, a Azure Databricks pode aproveitar o constraint para reescrever consultas. É da responsabilidade do utilizador garantir que o constraint está satisfeito. Confiar em um constraint que não está satisfeito pode levar a resultados de consulta incorretos.

        A predefinição é NORELY.

    • foreign_key_option

      Lista as propriedades específicas para restrições de chave estrangeira. Todas as propriedades são opcionais, mas implícitas por padrão. Cada propriedade pode, no máximo, ser especificada uma vez.

      • MATCH FULL

        Para que a constraint seja considerada verdadeira, todas as columnvalues devem ser NOT NULL.

      • ON UPDATE NO ACTION

        Se o PRIMARY KEY pai for atualizado, o Azure Databricks não tomará nenhuma ação para restringir a chave estrangeira update ou update.

      • ON DELETE NO ACTION

        Se a linha pai for excluída, o Azure Databricks não tomará nenhuma ação para restringir a ação, update a chave estrangeira ou excluir a linha dependente.

Importante

O Azure Databricks não impõe restrições de chave primária ou 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 você pode executar verificações em relação aos 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);