Visão geral das restrições¶
O Snowflake oferece a seguinte funcionalidade de restrição:
Chaves únicas, primárias e estrangeiras, e colunas NOT NULL.
Restrições nomeadas.
Restrições de coluna única e de várias colunas.
Criação de restrições em linha e fora de linha.
Suporte à criação, modificação e eliminação de restrições.
Neste tópico:
Tipos de restrições com suporte¶
O Snowflake oferece suporte aos seguintes tipos de restrição da norma ANSI SQL:
UNIQUE
PRIMARY KEY
FOREIGN KEY
NOT NULL
Uma tabela pode ter várias chaves únicas e chaves estrangeiras, mas apenas uma chave primária. Todas as chaves estrangeiras devem fazer referência a uma chave primária ou única que corresponda aos tipos de coluna de cada coluna na chave estrangeira. A chave primária para uma chave estrangeira pode estar em uma tabela diferente ou na mesma tabela que a chave estrangeira.
Nota
O Snowflake oferece suporte à definição e manutenção das restrições, mas não as aplica, exceto pelas restrições NOT NULL, que são sempre aplicadas.
Restrições de tabela¶
O Snowflake oferece suporte à definição de restrições em tabelas permanentes, transitórias e temporárias. As restrições podem ser definidas em colunas de todos os tipos de dados, e não há limites para o número de colunas que podem ser incluídas em uma restrição.
Quando uma tabela é copiada usando CREATE TABLE … LIKE ou CREATE TABLE … CLONE, todas as restrições existentes na tabela, incluindo chaves estrangeiras, são copiadas para a nova tabela.
Comandos e funções adicionais, como DROP / UNDROP e GET_DDL são aceitos para tabelas com restrições. Eles também são aceitos para esquemas e bancos de dados.
Para o Snowflake Time Travel, quando versões anteriores de uma tabela são copiadas, a versão atual das restrições na tabela é usada porque o Snowflake não armazena versões anteriores de restrições nos metadados da tabela.
Restrições de coluna única e de várias colunas¶
As restrições podem ser definidas em uma única coluna ou em várias colunas da mesma tabela.
Para restrições de várias colunas (ou seja, chaves primárias ou chaves únicas compostas), as colunas são ordenadas, e cada coluna tem uma sequência de chaves correspondente.
Restrições em linha e fora de linha¶
As restrições são definidas como em linha ou fora de linha durante a criação ou modificação da tabela:
As restrições em linha são criadas como parte da definição da coluna e só podem ser usadas para restrições de coluna única.
As restrições fora de linha são definidas usando uma cláusula separada que especifica as colunas para as quais a restrição é criada. Elas podem ser usadas para criar restrições de uma ou várias colunas, assim como para criar restrições para colunas existentes.