Shrnutí :v tomto tutoriálu se naučíte používat SQLite NOT NULL
omezení, které zajistí, že hodnoty ve sloupci nebudou NULL
.
Úvod do SQLite NOT NULL
omezení
Při vytváření tabulky můžete určit, zda sloupec přijímá NULL
hodnoty nebo ne. Ve výchozím nastavení všechny sloupce v tabulce přijímají NULL
hodnoty kromě toho, že explicitně používáte NOT NULL
omezení.
Chcete-li definovat NOT NULL
omezení pro sloupec, použijete následující syntaxi:
CREATE TABLE table_name (
...,
column_name type_name NOT NULL,
...
);
Code language: SQL (Structured Query Language) (sql)
Na rozdíl od jiných omezení, jako je PRIMARY KEY
a CHECK
, můžete definovat pouze NOT NULL
omezení na úrovni sloupců, nikoli na úrovni tabulky.
Založeno na standardu SQL, PRIMARY KEY
by měl vždy znamenat NOT NULL
. SQLite však umožňuje NULL
hodnoty v PRIMARY KEY
kromě toho, že sloupec je INTEGER PRIMARY KEY
sloupec nebo tabulka je WITHOUT ROWID
tabulka nebo sloupec je definován jako NOT NULL
sloupec.
To je způsobeno chybou v některých dřívějších verzích. Pokud je tato chyba opravena tak, aby odpovídala standardu SQL, mohlo by to poškodit starší systémy. Proto bylo rozhodnuto povolit NULL
hodnoty v PRIMARY KEY
sloupec.
Jednou NOT NULL
omezení je připojeno ke sloupci, jakýkoli pokus o nastavení hodnoty sloupce na NULL
jako je vkládání nebo aktualizace způsobí porušení omezení.
SQLite NOT NULL
příklad omezení
Následující příklad vytvoří novou tabulku s názvem suppliers
:
CREATE TABLE suppliers(
supplier_id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
Code language: SQL (Structured Query Language) (sql)
V tomto příkladu supplier_id
je PRIMARY KEY
ve sloupci suppliers
stůl. Protože tento sloupec je deklarován jako INTEGER PRIMARY KEY
, nebude akceptovat NULL
hodnoty.
name
sloupec je také deklarován s NOT NULL
omezení, takže bude přijímat pouze hodnoty jiné než NULL.
Následující příkaz se pokouší vložit NULL
do name
ve sloupci suppliers
tabulka:
INSERT INTO suppliers(name)
VALUES(NULL);
Code language: SQL (Structured Query Language) (sql)
Příkaz se nezdaří kvůli NOT NULL
porušení omezení. Zde je chybová zpráva:
SQL Error [19]: [SQLITE_CONSTRAINT] Abort due to constraint violation (NOT NULL constraint failed: suppliers.name)
Code language: CSS (css)
V tomto tutoriálu jste se naučili používat SQLite NOT NULL
omezení, které zajistí, že hodnoty ve sloupci nebudou NULL.