Creating constraints¶
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.
Multi-column constraints must be created with a separate out-of-line clause that specifies the columns in the constraint.
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.
Creating constraints inline¶
A sintaxe em linha a seguir só pode ser usada para restrições de uma única coluna:
Para obter detalhes de sintaxe inline_constraint, consulte CREATE | ALTER TABLE … CONSTRAINT.
Creating constraints out-of-line¶
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:
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.
If only the referenced table is copied, no new foreign keys are created, although the primary or unique keys are copied.
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.