Sammanfattning :i denna handledning kommer du att lära dig hur du använder SQLite UNIQUE
begränsning för att säkerställa att alla värden i en kolumn eller en grupp av kolumner är unika.
Introduktion till SQLite UNIQUE
begränsning
En UNIQUE
begränsning säkerställer att alla värden i en kolumn eller en grupp av kolumner är skilda från varandra eller unika.
För att definiera en UNIQUE
begränsning använder du UNIQUE
nyckelord följt av en eller flera kolumner.
Du kan definiera en UNIQUE
begränsning på kolumn- eller tabellnivå. Endast på tabellnivå kan du definiera en UNIQUE
begränsning över flera kolumner.
Följande visar hur man definierar en UNIQUE
begränsning för en kolumn på kolumnnivå:
CREATE TABLE table_name(
...,
column_name type UNIQUE,
...
);
Code language: SQL (Structured Query Language) (sql)
Eller på tabellnivå:
CREATE TABLE table_name(
...,
UNIQUE(column_name)
);
Code language: SQL (Structured Query Language) (sql)
Följande illustrerar hur man definierar en UNIQUE
begränsning för flera kolumner:
CREATE TABLE table_name(
...,
UNIQUE(column_name1,column_name2,...)
);
Code language: SQL (Structured Query Language) (sql)
En gång en UNIQUE
begränsning är definierad, om du försöker infoga eller uppdatera ett värde som redan finns i kolumnen kommer SQLite att utfärda ett fel och avbryta operationen.
SQLite UNIQUE
exempel på begränsningar
Låt oss ta några exempel på hur du använder UNIQUE
begränsning.
Definiera en UNIQUE
begränsning för en kolumnexempel
Följande sats skapar en ny tabell med namnet contacts
med en UNIQUE
begränsning definierad för email
kolumn:
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)
Följande exempel infogar en ny rad i contacts
tabell:
INSERT INTO contacts(first_name,last_name,email)
VALUES ('John','Doe','[email protected]');
Code language: SQL (Structured Query Language) (sql)
Om du försöker infoga en ny kontakt med samma e-postadress får du ett felmeddelande:
INSERT INTO contacts(first_name,last_name,email)
VALUES ('Johnny','Doe','[email protected]');
Code language: SQL (Structured Query Language) (sql)
Här är felmeddelandet:
Error while executing SQL query on database 'chinook': UNIQUE constraint failed: contacts.email
Code language: SQL (Structured Query Language) (sql)
Definiera en UNIQUE
begränsning för flera kolumner exempel
Följande sats skapar shapes
tabell med en UNIQUE
begränsning definierad för background_color
och foreground_color
kolumner:
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)
Följande sats infogar en ny rad i shapes
tabell:
INSERT INTO shapes(background_color,foreground_color)
VALUES('red','green');
Code language: SQL (Structured Query Language) (sql)
Följande uttalande fungerar på grund av ingen dupliceringsöverträdelse i båda background_color
och foreground_color
kolumner:
INSERT INTO shapes(background_color,foreground_color)
VALUES('red','blue');
Code language: SQL (Structured Query Language) (sql)
Följande sats orsakar dock ett fel på grund av dubbletterna i båda background_color
och foreground_color
kolumner:
INSERT INTO shapes(background_color,foreground_color)
VALUES('red','green');
Code language: SQL (Structured Query Language) (sql)
Här är felet:
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
constraint och NULL
SQLite behandlar alla NULL-värden är olika, därför är en kolumn med en UNIQUE
begränsning kan ha flera NULL-värden.
Följande sats skapar en ny tabell med namnet lists
vars email
kolumnen har en UNIQUE
begränsning:
CREATE TABLE lists(
list_id INTEGER PRIMARY KEY,
email TEXT UNIQUE
);
Code language: SQL (Structured Query Language) (sql)
Följande sats infogar flera NULL-värden i email
kolumnen i lists
tabell:
INSERT INTO lists(email)
VALUES(NULL),(NULL);
Code language: SQL (Structured Query Language) (sql)
Låt oss fråga data från lists
tabell:
SELECT * FROM lists;
Code language: SQL (Structured Query Language) (sql)
Här är resultatet:
Som du kan se, även om e-postkolumnen har en UNIQUE
begränsning, kan den acceptera flera NULL-värden.
I den här handledningen har du lärt dig hur du använder SQLite UNIQUE
begränsning för att säkerställa att alla värden i en kolumn eller en grupp kolumner är unika.