Shrnutí :v tomto tutoriálu se naučíte používat SQLite UNIQUE
omezení, aby bylo zajištěno, že všechny hodnoty ve sloupci nebo skupině sloupců jsou jedinečné.
Úvod do SQLite UNIQUE
omezení
UNIQUE
omezení zajišťuje, že všechny hodnoty ve sloupci nebo skupině sloupců jsou navzájem odlišné nebo jedinečné.
Chcete-li definovat UNIQUE
omezení, použijete UNIQUE
klíčové slovo následované jedním nebo více sloupci.
Můžete definovat UNIQUE
omezení na úrovni sloupce nebo tabulky. Pouze na úrovni tabulky můžete definovat UNIQUE
omezení napříč více sloupci.
Následující text ukazuje, jak definovat UNIQUE
omezení pro sloupec na úrovni sloupce:
CREATE TABLE table_name(
...,
column_name type UNIQUE,
...
);
Code language: SQL (Structured Query Language) (sql)
Nebo na úrovni tabulky:
CREATE TABLE table_name(
...,
UNIQUE(column_name)
);
Code language: SQL (Structured Query Language) (sql)
Následující text ukazuje, jak definovat UNIQUE
omezení pro více sloupců:
CREATE TABLE table_name(
...,
UNIQUE(column_name1,column_name2,...)
);
Code language: SQL (Structured Query Language) (sql)
Jednou UNIQUE
omezení je definováno, pokud se pokusíte vložit nebo aktualizovat hodnotu, která již ve sloupci existuje, SQLite vydá chybu a přeruší operaci.
SQLite UNIQUE
příklady omezení
Podívejme se na několik příkladů použití UNIQUE
omezení.
Definování UNIQUE
omezení pro jeden příklad sloupce
Následující příkaz vytvoří novou tabulku s názvem contacts
s UNIQUE
omezení definované pro email
sloupec:
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)
Následující příklad vloží nový řádek do contacts
tabulka:
INSERT INTO contacts(first_name,last_name,email)
VALUES ('John','Doe','[email protected]');
Code language: SQL (Structured Query Language) (sql)
Pokud se pokusíte vložit nový kontakt se stejným e-mailem, zobrazí se chybová zpráva:
INSERT INTO contacts(first_name,last_name,email)
VALUES ('Johnny','Doe','[email protected]');
Code language: SQL (Structured Query Language) (sql)
Zde je chybová zpráva:
Error while executing SQL query on database 'chinook': UNIQUE constraint failed: contacts.email
Code language: SQL (Structured Query Language) (sql)
Definování UNIQUE
omezení pro více sloupců příklad
Následující příkaz vytvoří shapes
tabulka s UNIQUE
omezení definované pro background_color
a foreground_color
sloupce:
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)
Následující příkaz vloží nový řádek do shapes
tabulka:
INSERT INTO shapes(background_color,foreground_color)
VALUES('red','green');
Code language: SQL (Structured Query Language) (sql)
Následující příkaz funguje, protože v obou background_color
nedochází k porušení duplikace a foreground_color
sloupce:
INSERT INTO shapes(background_color,foreground_color)
VALUES('red','blue');
Code language: SQL (Structured Query Language) (sql)
Následující příkaz však způsobuje chybu kvůli duplikátům v obou background_color
a foreground_color
sloupce:
INSERT INTO shapes(background_color,foreground_color)
VALUES('red','green');
Code language: SQL (Structured Query Language) (sql)
Zde je chyba:
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
omezení a NULL
SQLite považuje všechny hodnoty NULL za odlišné, proto sloupec s UNIQUE
omezení může mít více hodnot NULL.
Následující příkaz vytvoří novou tabulku s názvem lists
jehož email
sloupec má UNIQUE
omezení:
CREATE TABLE lists(
list_id INTEGER PRIMARY KEY,
email TEXT UNIQUE
);
Code language: SQL (Structured Query Language) (sql)
Následující příkaz vloží do email
více hodnot NULL sloupec lists
tabulka:
INSERT INTO lists(email)
VALUES(NULL),(NULL);
Code language: SQL (Structured Query Language) (sql)
Pojďme se dotazovat na data ze lists
tabulka:
SELECT * FROM lists;
Code language: SQL (Structured Query Language) (sql)
Zde je výstup:
Jak vidíte, i když sloupec e-mailu má UNIQUE
omezení, může přijmout více hodnot NULL.
V tomto tutoriálu jste se naučili používat SQLite UNIQUE
omezení, aby bylo zajištěno, že všechny hodnoty ve sloupci nebo skupině sloupců jsou jedinečné.