Modificação de restrições

Uma vez criada uma restrição:

  • A restrição pode ser renomeada.

  • Algumas propriedades podem ser modificadas, 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.

  • A definição de coluna para uma restrição não pode ser modificada, 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, a restrição pode ser identificada usando o nome da restrição ou as colunas na definição da restrição junto com o tipo da restrição. As chaves primárias também podem ser identificadas usando a palavra-chave PRIMARY KEY, porque cada tabela pode ter apenas uma única chave primária.

Se uma tabela com restrições for modificada, por exemplo, renomear tabela ou trocar tabela por outra tabela, as restrições são atualizadas para refletir as alterações.

Neste tópico:

Renomeação de 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>;
Copy

Modificação das 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 ] };
Copy

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

  • NOT ENFORCED

  • NOVALIDATE

  • RELY e NORELY

Note que o Snowflake não oferece suporte à configuração ENFORCED e VALIDATE.

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

Modificação de uma tabela com restrições

Se uma tabela com restrições for renomeada, as restrições da tabela e as restrições de chave estrangeira que fazem referência à tabela são atualizadas para fazer referência ao novo nome.

Da mesma forma, se uma tabela for trocada por outra tabela existente, todas as restrições da tabela são mantidas na tabela trocada.

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