Résumé :dans ce tutoriel, vous apprendrez à utiliser le SQLite UNIQUE
contrainte pour s'assurer que toutes les valeurs d'une colonne ou d'un groupe de colonnes sont uniques.
Introduction à SQLite UNIQUE
contrainte
Un UNIQUE
La contrainte garantit que toutes les valeurs d'une colonne ou d'un groupe de colonnes sont distinctes les unes des autres ou uniques.
Pour définir un UNIQUE
contrainte, vous utilisez le UNIQUE
mot-clé suivi d'une ou plusieurs colonnes.
Vous pouvez définir un UNIQUE
contrainte au niveau de la colonne ou de la table. Uniquement au niveau de la table, vous pouvez définir un UNIQUE
contrainte sur plusieurs colonnes.
Ce qui suit montre comment définir un UNIQUE
contrainte pour une colonne au niveau de la colonne :
CREATE TABLE table_name(
...,
column_name type UNIQUE,
...
);
Code language: SQL (Structured Query Language) (sql)
Ou au niveau de la table :
CREATE TABLE table_name(
...,
UNIQUE(column_name)
);
Code language: SQL (Structured Query Language) (sql)
Ce qui suit illustre comment définir un UNIQUE
contrainte pour plusieurs colonnes :
CREATE TABLE table_name(
...,
UNIQUE(column_name1,column_name2,...)
);
Code language: SQL (Structured Query Language) (sql)
Une fois UNIQUE
contrainte est définie, si vous tentez d'insérer ou de mettre à jour une valeur qui existe déjà dans la colonne, SQLite émettra une erreur et abandonnera l'opération.
SQLite UNIQUE
exemples de contraintes
Prenons quelques exemples d'utilisation du UNIQUE
contrainte.
Définir un UNIQUE
contrainte pour un exemple de colonne
L'instruction suivante crée une nouvelle table nommée contacts
avec un UNIQUE
contrainte définie pour le email
colonne :
CREATE TABLE contacts(
contact_id INTEGER PRIMARY KEY,
first_name TEXT,
last_name TEXT,
email TEXT NOT NULL UNIQUE
);
Code language: SQL (Structured Query Language) (sql)
L'exemple suivant insère une nouvelle ligne dans les contacts
tableau :
INSERT INTO contacts(first_name,last_name,email)
VALUES ('John','Doe','[email protected]');
Code language: SQL (Structured Query Language) (sql)
Si vous tentez d'insérer un nouveau contact avec le même e-mail, vous obtiendrez un message d'erreur :
INSERT INTO contacts(first_name,last_name,email)
VALUES ('Johnny','Doe','[email protected]');
Code language: SQL (Structured Query Language) (sql)
Voici le message d'erreur :
Error while executing SQL query on database 'chinook': UNIQUE constraint failed: contacts.email
Code language: SQL (Structured Query Language) (sql)
Définir un UNIQUE
exemple de contrainte pour plusieurs colonnes
L'instruction suivante crée les shapes
table avec un UNIQUE
contrainte définie pour le background_color
et foreground_color
colonnes :
CREATE TABLE shapes(
shape_id INTEGER PRIMARY KEY,
background_color TEXT,
foreground_color TEXT,
UNIQUE(background_color,foreground_color)
);
Code language: SQL (Structured Query Language) (sql)
L'instruction suivante insère une nouvelle ligne dans les shapes
tableau :
INSERT INTO shapes(background_color,foreground_color)
VALUES('red','green');
Code language: SQL (Structured Query Language) (sql)
L'instruction suivante fonctionne car il n'y a pas de violation de duplication dans les deux background_color
et foreground_color
colonnes :
INSERT INTO shapes(background_color,foreground_color)
VALUES('red','blue');
Code language: SQL (Structured Query Language) (sql)
Cependant, l'instruction suivante provoque une erreur en raison des doublons dans background_color
et foreground_color
colonnes :
INSERT INTO shapes(background_color,foreground_color)
VALUES('red','green');
Code language: SQL (Structured Query Language) (sql)
Voici l'erreur :
Error while executing SQL query on database 'chinook': `UNIQUE` constraint failed: shapes.background_color, shapes.foreground_color
Code language: SQL (Structured Query Language) (sql)
SQLite UNIQUE
contrainte et NULL
SQLite traite toutes les valeurs NULL sont différentes, donc une colonne avec un UNIQUE
contrainte peut avoir plusieurs valeurs NULL.
L'instruction suivante crée une nouvelle table nommée lists
dont email
la colonne a un UNIQUE
contrainte :
CREATE TABLE lists(
list_id INTEGER PRIMARY KEY,
email TEXT UNIQUE
);
Code language: SQL (Structured Query Language) (sql)
L'instruction suivante insère plusieurs valeurs NULL dans le email
colonne des lists
tableau :
INSERT INTO lists(email)
VALUES(NULL),(NULL);
Code language: SQL (Structured Query Language) (sql)
Interrogeons les données des lists
tableau :
SELECT * FROM lists;
Code language: SQL (Structured Query Language) (sql)
Voici le résultat :
Comme vous pouvez le voir, même si la colonne email a un UNIQUE
contrainte, il peut accepter plusieurs valeurs NULL.
Dans ce tutoriel, vous avez appris à utiliser le SQLite UNIQUE
contrainte pour s'assurer que toutes les valeurs d'une colonne ou d'un groupe de colonnes sont uniques.