Partilhar via


CONSTRAINT cláusula

Aplica-se a:Marque Sim Databricks SQL Marque Sim 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 um constraint de verificação a um Delta Lake table use ALTER TABLE após a criação do table.

Sintaxe

Use a cláusula table_constraint para definir restrições que abrangem vários columns ou para separar a sintaxe da definição de column.

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_constraintpara definir restrições específicas para uma única definição de column.

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, você pode especificar ENABLE NOVALIDATE em vez de NOT ENFORCED DEFERRABLE INITIALLY DEFERRED.

Parameters

  • CONSTRAINT Designação

    Opcionalmente, especifica um nome para o constraint. O nome tem de ser único no schema. Se nenhum nome for fornecido, o Azure Databricks generate um.

  • PRIMARY KEY ( key_column [ SÉRIES CRONOLÓGICAS ] [, ...] ) [ constraint_option [...] ]

    Aplica-se a:marca de verificação sim Databricks SQL marca de verificação sim Databricks Runtime 11.3 LTS e superior marca de verificação sim Unity Catalog apenas

    Adiciona uma chave primária informativa constraint à exibição table ou materializada. Uma visão table ou materializada pode ter, no máximo, uma chave primária.

    Os columns de chave primária são implicitamente definidos como NOT NULL.

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

    • key_column

      Uma column do sujeito table ou visão materializada. Column nomes 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 column da chave primária como representando uma série temporal.

  • PRIMARY KEY [ constraint_option ] [...]

    Adiciona uma única chave primária columnconstraint à vista materializada table ou tabela, usando a definição da chave primária anterior column.

    Isto column_constraint é equivalente ao table_constraint

    PRIMARY KEY (key_column) [ constraint_option ] [...]

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

    Aplica-se a:marca de verificação sim Databricks SQL marca de verificação sim Databricks Runtime 11.3 LTS e superior marca de verificação sim Unity Catalog apenas

    Adiciona uma chave estrangeira informacional (integridade referencial) constraint à visualização table ou materializada.

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

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

    • foreign_key_column

      Uma column do sujeito table ou visão materializada. Column nomes 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 partilhar um set idêntico da chave estrangeira columns.

    • parent_table

      Especifica o modo de exibição table ou materializado ao qual a chave estrangeira se refere. O table deve ter um PRIMARY KEYconstraintdefinido, e tu deves ter o privilégio SELECT no table.

    • parent_column

      Um column na table pai ou na visão materializada que faz parte de sua chave primária. Todos os columns de chave primária do table pai ou da exibição materializada devem ser listados.

      Se os columns pais não estiverem listados, eles serão especificados de acordo com a ordem dada na definição de PRIMARY KEY.

    • FOREIGN KEY REFERENCES parent_table [ ( parent_column ) ] foreign_key_option

      Adiciona um único columnconstraint de chave estrangeira à exibição table ou materializada, usando a definição de chave estrangeira column anterior.

      Isto column_constraint é equivalente ao table_constraint

      FOREIGN KEY ( foreign_key_column ) REFERENCES parent_table [ ( parent_column ) ] foreign_key_option

  • 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

      A implementação do Constraint é 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:assinalado com sim Databricks SQL assinalado com sim Databricks Runtime 15.4 e superior para restrições de FOREIGN KEY

      Caso RELY, o Azure Databricks pode explorar o constraint para reescrever consultas. É da responsabilidade do utilizador garantir que o constraint seja cumprido. Confiar num constraint que não esteja satisfeito pode conduzir 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 realizará 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

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