Come utilizzare il vincolo unico in SQLite

Come utilizzare il vincolo unico in SQLite
In SQLite, ci sono diversi vincoli, che limitano i dati della colonna con alcune regole, quando i dati vengono inseriti, aggiornati o modificati. Alcuni dei vincoli comuni dei database che sono supportati da SQLite sono unici, chiave primaria, chiave estera, controllo e non null.

SQLite è un RDBMS, che viene utilizzato per gestire i dati del database, che viene inserito nelle righe e nelle colonne della tabella. Questo articolo ci aiuta a capire cosa è un vincolo unico in SQLite e come funziona in SQLite.

Qual è il vincolo unico in sqlite

Un vincolo univoco garantisce che i dati nella colonna dovrebbero essere univoci, il che significa che nessun campo della stessa colonna contenga valori simili. Ad esempio, creiamo una colonna, e -mail e la definiamo con il vincolo univoco in modo da garantire che nessuna e -mail inserita nella colonna debba essere uguale all'altro record della colonna.

Qual è la differenza tra il vincolo di chiave univoco e primario in SQLite

Entrambi i vincoli, la chiave primaria e unica assicurano che nessuna voce duplicata debba essere inserita nella tabella, ma la differenza è; La tabella dovrebbe contenere solo una chiave primaria mentre il vincolo univoco può essere utilizzato per più di una colonna nella stessa tabella.

Come il vincolo unico è definito in sqlite

Il vincolo univoco può essere definito sulla colonna singola o nelle colonne più in SQLite.

Come il vincolo unico è definito in una colonna

Un vincolo univoco può essere definito come una colonna, mediante la quale può garantire che nessun valori simili possano immettere in qualsiasi campo di quella colonna. La sintassi generale della definizione del vincolo univoco su una colonna è:

Crea table Table_name (colonnario 1 Tipo di dati univoco, tipi di dati colonnari2);

La spiegazione di questo è:

  • Utilizzare la clausola di Crea tabella per creare una tabella e sostituire il nome table_
  • Definire un nome di colonna con il suo tipo di dati sostituendo la colonna1 e il tipo di dati
  • Usa la clausola unica su una colonna che stai per definire con questo vincolo
  • Definire le altre colonne con i loro dati

Per comprendere questa sintassi, considera un esempio di creazione di una tabella per studenti_data che ha due colonne, una è di std_id e l'altra è di st_name, doveva definire la colonna, std_id, con il vincolo unico in modo che nessuno degli studenti possa avere Std_id simile a:

Crea table Students_data (std_id integer univoco, std_name text);

Inserire i valori usando:

Inserire in studenti_data valori (1, "John"), (2, "Paul");

Ora aggiungeremo un altro nome da studente in cui STD_ID è 1:

Inserisci nei valori Students_Data (1, 'Hannah');

Possiamo vedere dall'output, ha generato l'errore di inserire il valore di std_id perché è stato definito con il vincolo univoco che significa che nessun valore può essere duplicato con gli altri valori di quella colonna.

Come viene definito il vincolo univoco per più colonne

Possiamo definire più colonne con il vincolo univoco, il che garantisce che non vi sia duplicazione dei dati inseriti in tutte le righe contemporaneamente. Ad esempio, se dobbiamo scegliere le città per un viaggio in tre gruppi di persone (A, B e C), non possiamo assegnare la stessa città a tutti i tre gruppi, questo può essere fatto usando il vincolo unico.

Ad esempio, questi tre scenari possono essere possibili:

Gruppo_a Group_b Group_c
Florida Florida Boston
New York Florida Florida
Florida Florida Florida

Ma il seguente scenario non è possibile se stiamo usando i vincoli unici:

Gruppo_a Group_b Group_c
Florida Florida Florida

La sintassi generale dell'utilizzo del vincolo univoco per le colonne multiple è:

Crea table Table_name (colonnario 1 Tipo di dati, colonna2, univoco (column1, column2));

La spiegazione di questo è:

  • Utilizzare la clausola della tabella Crea per creare una tabella e sostituire il nome Table_
  • Definire un nome di colonna con il suo tipo di dati sostituendo la colonna1 e il tipo di dati
  • Usa la clausola univoca e digita i nomi delle colonne nel () che stai per definire con questo vincolo

Per capirlo considereremo l'esempio sopra e eseguirà il seguente comando per creare una tabella di Trip_Data:

Crea table Trip_data (Group_a text, Group_b text, Group_c Text, univoco (group_a, group_b, group_c));

Inseriremo i valori dell'assegnazione delle loro città:

Inserisci in Trip_data Values ​​("Florida", "Florida", "Boston"), ("New York", "Florida", "Florida"), ("Florida", "Florida", "Florida");

Ora inseriremo la stessa città in tutte le colonne di Trip_Data:

Inserisci in Trip_data Values ​​("Florida", "Florida", "Florida");

Possiamo vedere dall'output, non è consentita la duplicazione dei dati in tutte le colonne definite dal vincolo univoco e l'errore generato del vincolo univoco non è riuscita.

Come aggiungere il vincolo unico alla tabella esistente

In SQLite, possiamo aggiungere il vincolo usando il comando alter, ad esempio, abbiamo una tabella studenti_data con colonne std_id, std_name, vogliamo aggiungere un vincolo std_id alla tabella, studenti_data:

  • Utilizzare il comando "Pragma Foreign Keys = Off" per Out the Foreign Key vincoli
  • Usa il comando "Inizia transazione;"
  • Utilizzare il comando "Altera table table_name rinomina su old_table;" Per rinominare la tabella effettiva
  • Crea di nuovo una tabella con il nome precedente, ma durante la definizione della colonna questa volta, definisci anche i vincoli univoci
  • Copia i dati della tabella precedente (il cui nome è cambiato), nella nuova tabella (che ha il nome precedente)
  • Elimina la prima tabella (il cui nome è stato cambiato)
  • Usa "commit"
  • Usa il comando "Pragma Foreign Keys = ON", per i vincoli delle chiavi straniere
Inizia la transazione;
Alter Table Students_Data Rinomina su new_students_data;
Crea table Students_Data (ID intero non NULL UNICO, NOME TESTO NON NULL, PRESENZIONE INTEGER NON NULL);
Inserire in studenti_data selezionare * da new_students_data;
Drop tabella new_students_data;
COMMETTERE;
Pragma Foreign_keys = on;

Come abbandonare il vincolo unico al tavolo esistente

Come altri database, non possiamo abbandonare il vincolo usando i comandi drop and altera, per eliminare i vincoli univoci che dovremmo seguire la stessa procedura che abbiamo optato per l'aggiunta del vincolo a una tabella esistente e ridefinire la struttura della tabella.

Considera di nuovo l'esempio sopra e rimuovi i vincoli unici da esso:

Pragma Foreign_Keys = Off;
Inizia la transazione;
Alter Table Students_Data Rinomina su new_students_data;
Crea table Students_data (ID intero non NULL, Nome testo non nullo, intero di frequenza non null);
Inserire in studenti_data selezionare * da new_students_data;
Drop tabella new_students_data;
COMMETTERE;
Pragma Foreign_keys = on;

Conclusione

Il vincolo unico viene utilizzato nei database per limitare la duplicazione dei valori inseriti nei campi della tabella proprio come il vincolo chiave principale, ma c'è una differenza tra entrambi; Una tabella può avere solo una chiave primaria, mentre una tabella può avere colonne chiave univoci più di una. In questo articolo, abbiamo discusso di cosa sia un vincolo unico e come può essere usato in SQLite con l'aiuto di esempi.