Como usar restrições únicas no sqlite

Como usar restrições únicas no sqlite
No sqlite, existem diferentes restrições, que restringem os dados da coluna por algumas regras, quando os dados são inseridos, atualizados ou modificados. Algumas das restrições comuns dos bancos de dados suportados pelo SQLite são únicos, chave primária, chave estrangeira, check e não nula.

O SQLite é um RDBMS, usado para gerenciar os dados do banco de dados, que é colocado nas linhas e colunas da tabela. Este artigo nos ajuda a entender o que é uma restrição única no sqlite, bem como como funciona no sqlite.

Qual é a restrição única em Sqlite

Uma restrição exclusiva garante que os dados na coluna sejam únicos, o que significa que nenhum campo da mesma coluna contém valores semelhantes. Por exemplo, criamos uma coluna, email e a definimos com a restrição exclusiva, para garantir que nenhum email inserido na coluna seja o mesmo que o outro registro da coluna.

Qual é a diferença entre a restrição de chave única e principal em sqlite

Ambas as restrições, chave primária e exclusiva, garantem que nenhuma entrada duplicada seja inserida na tabela, mas a diferença é; A tabela deve conter apenas uma chave primária, enquanto a restrição única pode ser usada para mais de uma coluna na mesma tabela.

Quão única restrição será definida em SQLite

A restrição exclusiva pode ser definida na coluna única ou nas várias colunas no SQLITE.

Quão única restrição é definida para uma coluna

Uma restrição única pode ser definida como uma coluna, pela qual pode garantir que nenhum valores semelhantes possa entrar em qualquer campo dessa coluna. A sintaxe geral de definir a restrição única em uma coluna é:

Criar tabela tabela_name (column1 datatype exclusivo, colunl2 datatype);

A explicação disso é:

  • Use a cláusula Create Table para criar uma tabela e substitua o tabela_name
  • Defina um nome de coluna com seu tipo de dados substituindo a coluna1 e o tipo de dados
  • Use a cláusula exclusiva para uma coluna que você definirá com esta restrição
  • Defina as outras colunas com seus tipos de dados

Para entender essa sintaxe, considere um exemplo de criação de uma tabela para estudantes_data que possui duas colunas, uma é de std_id e a outra é de st_name, deveriam definir a coluna, std_id, com a restrição única para que nenhum dos alunos possa ter std_id semelhante como:

Criar tabela estudantes_data (std_id inteiro exclusivo, texto std_name);

Insira os valores usando:

Inserir em estudantes_data valores (1, 'John'), (2, 'Paul');

Agora, adicionaremos outro nome do aluno em que o std_id é 1:

Inserir em valores de estudantes_data (1, 'hannah');

Podemos ver na saída, ele gerou o erro de inserir o valor de std_id porque foi definido com a restrição única, o que significa que nenhum valor pode ser duplicado com os outros valores dessa coluna.

Como a restrição única é definida para várias colunas

Podemos definir várias colunas com a restrição exclusiva, o que garante que não haja duplicação dos dados inseridos em todas as linhas ao mesmo tempo. Por exemplo, se tivermos que escolher cidades para uma viagem a três grupos de pessoas (A, B e C), não podemos atribuir a mesma cidade a todos os três grupos, isso pode ser feito usando a restrição única.

Por exemplo, esses três cenários podem ser possíveis:

Grupo A Group_b Group_c
Flórida Flórida Boston
Nova Iorque Flórida Flórida
Flórida Flórida Flórida

Mas o cenário a seguir não é possível se estivermos usando as restrições exclusivas:

Grupo A Group_b Group_c
Flórida Flórida Flórida

A sintaxe geral de usar a restrição exclusiva às várias colunas é:

Criar tabela tabela_name (colunl1 datatype, column2, exclusivo (column1, column2));

A explicação disso é:

  • Use a cláusula Create Table para criar uma tabela e substitua a tabela_name pelo nome
  • Defina um nome de coluna com seu tipo de dados substituindo a coluna1 e o tipo de dados
  • Use a cláusula exclusiva e digite os nomes das colunas no () que você vai definir com essa restrição

Para entender isso, consideraremos o exemplo acima e executaremos o seguinte comando para criar uma tabela de trip_data:

Criar tabela trip_data (group_a text, group_b text, group_c text, exclusivo (group_a, group_b, group_c));

Vamos inserir os valores de atribuir suas cidades:

Inserir em Trip_data Valores ('Florida', 'Florida', 'Boston'), ('Nova York', 'Florida', 'Florida'), ('Florida', 'Florida', 'Flórida');

Agora, inseriremos a mesma cidade em todas as colunas de Trip_data:

Inserir em valores trip_data ('Florida', 'Florida', 'Florida');

Podemos ver na saída, a duplicação dos dados em todas as colunas que são definidas pela restrição exclusiva não é permitida e o erro gerado da restrição exclusiva falhou.

Como adicionar a restrição única à tabela existente

No SQLITE, podemos adicionar a restrição usando o comando ALTER, por exemplo, temos uma tabela estudantes_data com colunas std_id, std_name, queremos adicionar uma restrição std_id à tabela, estudantes_data:

  • Use o comando “Pragma estrangeiro Keys = Off” para desligar as restrições de chave estrangeira
  • Use o comando "Begin Transaction"
  • Use o comando “ALTER TABLE TABLE_NAME Renomear para Old_table;” Para renomear a tabela real
  • Crie uma tabela novamente com o nome anterior, mas, ao definir a coluna desta vez, defina também as restrições únicas
  • Copie os dados da tabela anterior (cujo nome é alterado), para a nova tabela (que tem o nome anterior)
  • Exclua a primeira tabela (cujo nome foi alterado)
  • Use "Commit"
  • Use o comando “Pragma estrangeiro Keys = ON”, para as restrições das chaves estrangeiras
Iniciar a transação;
Alter tabela estudantes_data renomear para new_students_data;
Criar tabela estudantes_data (ID inteiro não é nulo exclusivo, nome do nome não nulo, participação inteira não nula);
Inserir em estudantes_data selecionar * de new_students_data;
Soltar tabela new_students_data;
COMPROMETER-SE;
PRAGMA FOREGN_KEYS = ON;

Como abandonar a restrição única para a tabela existente

Como outros bancos de dados, não podemos abandonar a restrição usando os comandos Drop e Alter, para excluir as restrições únicas, devemos seguir o mesmo procedimento que optamos por adicionar a restrição a uma tabela existente e redefinir a estrutura da tabela.

Vamos considerar o exemplo acima novamente e remover as restrições únicas dele:

PRAGMA FOREGN_KEYS = OFF;
Iniciar a transação;
Alter tabela estudantes_data renomear para new_students_data;
Criar tabela alunos_data (ID inteiro não nulo, nome do texto não nulo, participação inteira não nula);
Inserir em estudantes_data selecionar * de new_students_data;
Soltar tabela new_students_data;
COMPROMETER-SE;
PRAGMA FOREGN_KEYS = ON;

Conclusão

A restrição exclusiva é usada nos bancos de dados para restringir a duplicação dos valores inseridos nos campos da tabela, assim como a restrição de chave primária, mas há uma diferença entre os dois; Uma tabela pode ter apenas uma chave primária, enquanto uma tabela pode ter colunas -chave exclusivas mais de uma. Neste artigo, discutimos o que é uma restrição única e como ela pode ser usada no sqlite com a ajuda de exemplos.