Criação de restrições

Uma restrição pode ser criada na criação da tabela usando CREATE TABLE, ou adicionada posteriormente a uma tabela usando ALTER TABLE:

  • As restrições de uma coluna podem ser criadas em linha como parte da definição da coluna.

  • As restrições de múltiplas colunas devem ser criadas em uma cláusula separada, ou seja, fora de linha, que especifique as colunas na restrição.

Para criar uma restrição, certos privilégios de controle de acesso devem ser concedidos para a função utilizada a fim de criar a restrição. Para obter mais informações, consulte Requisitos de controle de acesso.

Criação de restrições em linha

A sintaxe em linha a seguir só pode ser usada para restrições de uma única coluna:

CREATE [ OR REPLACE ] TABLE <name> (<column_name> <column_type> [ <inline_constraint> ] , ... )

ALTER TABLE <name> ADD COLUMN <column_name> <column_type> [ <inline_constraint> ]
Copy

Para obter detalhes de sintaxe inline_constraint, consulte CREATE | ALTER TABLE … CONSTRAINT.

Criação de restrições fora de linha

A seguinte sintaxe fora de linha deve ser usada para restrições de múltiplas colunas, mas também pode ser usada para restrições de uma única coluna:

CREATE [ OR REPLACE ] TABLE <name> ( ... , [ <outofline_constraint> ], ... )

ALTER TABLE <name> ADD <outofline_constraint>
Copy

Para obter detalhes de sintaxe outofline_constraint, consulte CREATE | ALTER TABLE … CONSTRAINT.

Restrições em CREATE TABLE … LIKE e CLONE

O Snowflake oferece suporte à criação de cópias de tabelas usando CREATE TABLE:

  • Para criar uma cópia vazia, use CREATE TABLE … LIKE.

  • Para criar um clone, use CREATE TABLE … CLONE.

Além disso, cópias de tabelas são criadas automaticamente quando um esquema ou banco de dados é clonado.

Independentemente de como uma cópia é criada para uma tabela, as restrições da tabela original também são copiadas. Ao copiar uma chave estrangeira com uma tabela que faz referências (tabela de chave estrangeira) e uma tabela referenciada (tabela de chave primária), os seguintes cenários podem ocorrer:

  • Se ambas as tabelas forem copiadas no mesmo comando (como durante a clonagem de um esquema ou banco de dados), uma nova chave estrangeira será criada entre a nova tabela de referência e a tabela referenciada.

  • Se apenas a tabela de referência for copiada, uma nova chave estrangeira será criada na tabela de referência, que aponta para a tabela de chave primária original como a tabela referenciada.

  • Se apenas a tabela referenciada for copiada, nenhuma nova chave estrangeira é criada, embora as chaves primárias/únicas sejam copiadas.

Como resultado, se você copiar uma tabela de referência e uma tabela referenciada separadamente, será necessário criar manualmente uma nova chave estrangeira ou alterar manualmente a tabela de chave primária para a nova chave estrangeira.