Modificando restrições

Após a criação de uma restrição, você pode modificá-la das seguintes maneiras:

  • A restrição pode ser renomeada.

  • É possível modificar algumas propriedades; por exemplo, RELY.

  • Algumas propriedades não podem ser modificadas; por exemplo, DEFERRABLE. Para modificar essas propriedades, a restrição deve ser descartada e recriada.

  • Não é possível modificar a definição de coluna para uma restrição; por exemplo, adicionar novas colunas, descartar colunas existentes ou alterar a ordem das colunas. Para fazer esses tipos de alteração, a restrição deve ser descartada e recriada.

Ao modificar uma restrição, identifique-a usando o nome da restrição ou as colunas na definição da restrição, juntamente com o tipo da restrição. Também é possível identificar as chaves primárias usando a palavra-chave PRIMARY KEY, porque cada tabela pode ter apenas uma única PRIMARY KEY.

Se uma tabela com restrições for modificada, por exemplo, renomeando a tabela ou trocando a tabela por outra, as restrições serão atualizadas para refletir as alterações.

Renomeando uma restrição

Use a seguinte sintaxe para o comando ALTER TABLE para renomear uma restrição:

ALTER TABLE <table_name> RENAME CONSTRAINT <old_name> TO <new_name>;

Modificando as propriedades de uma restrição

Use a seguinte sintaxe para o comando ALTER TABLE para modificar as propriedades de uma restrição:

ALTER TABLE <table_name>
  { ALTER | MODIFY } {
      CONSTRAINT <name>
    | PRIMARY KEY
    | { UNIQUE | FOREIGN KEY } (<column_name>, [ ... ] )
  }
  { [ [ NOT ] ENFORCED ] [ VALIDATE | NOVALIDATE ] [ RELY | NORELY ] };

Para restrições CHECK, o constraint_name é obrigatório. Além disso, você não pode modificar o expr associado a uma restrição CHECK. Para modificar o expr, a restrição CHECK deve ser descartada e recriada.

Atualmente, o Snowflake oferece suporte apenas à definição das seguintes propriedades de restrição:

  • [ NOT ] ENFORCED

  • NOVALIDATE e VALIDATE

  • RELY e NORELY

O Snowflake não é compatível com a configuração de ENFORCED. O Snowflake é compatível apenas com a configuração de NOVALIDATE para restrições CHECK. Consulte também Valores padrão para e propriedades ENABLE e VALIDATE.

Para obter descrições das propriedades de restrição, consulte Propriedades de restrição.

Modificando uma tabela com restrições

Se uma tabela com restrições for renomeada, as restrições da tabela e quaisquer restrições FOREIGN KEY que façam referência a ela serão atualizadas para fazer referência ao novo nome.

Da mesma forma, se uma tabela for trocada por outra, a tabela existente e todas as restrições dela serão mantidas na tabela trocada.

Para obter mais detalhes sobre renomeação ou troca de tabelas, consulte ALTER TABLE.