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.