sql >> Databáze >  >> RDS >> SQLite

SQLite NOT NULL omezení

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.


  1. OMEZENÍ SQL

  2. T-SQL Jak dynamicky vytvářet tabulky v uložených procedurách?

  3. Jak vypočítám průběžný součet v SQL bez použití kurzoru?

  4. Vývoj odolnosti vůči chybám v PostgreSQL:Replikační fáze