Sammanfattning :i denna handledning lär du dig hur du använder SQLite NOT NULL
begränsning för att säkerställa att värdena i en kolumn inte är NULL
.
Introduktion till SQLite NOT NULL
begränsning
När du skapar en tabell kan du ange om en kolumn accepterarNULL
värden eller inte. Som standard accepterar alla kolumner i en tabell NULL
värden förutom att du uttryckligen använder NOT NULL
begränsningar.
För att definiera en NOT NULL
begränsning för en kolumn använder du följande syntax:
CREATE TABLE table_name (
...,
column_name type_name NOT NULL,
...
);
Code language: SQL (Structured Query Language) (sql)
Till skillnad från andra begränsningar som PRIMARY KEY
och CHECK
, du kan bara definiera NOT NULL
begränsningar på kolumnnivå, inte tabellnivå.
Baserat på SQL-standarden, PRIMARY KEY
ska alltid antyda NOT NULL
. Däremot tillåter SQLite NULL
värden i PRIMARY KEY
kolumn förutom att en kolumn är INTEGER PRIMARY KEY
kolumn eller tabellen är en WITHOUT ROWID
tabellen eller kolumnen definieras som en NOT NULL
kolumn.
Detta beror på en bugg i vissa tidiga versioner. Om den här buggen fixas för att överensstämma med SQL-standarden, kan den bryta de äldre systemen. Därför har det beslutats att tillåta NULL
värden i PRIMARY KEY
kolumn.
En gång en NOT NULL
begränsning är kopplad till en kolumn, varje försök att ställa in kolumnvärdet till NULL
till exempel att infoga eller uppdatera kommer att orsaka en begränsningsöverträdelse.
SQLite NOT NULL
begränsningsexempel
Följande exempel skapar en ny tabell med namnet suppliers
:
CREATE TABLE suppliers(
supplier_id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
Code language: SQL (Structured Query Language) (sql)
I det här exemplet är supplier_id
är PRIMARY KEY
kolumnen för suppliers
tabell. Eftersom den här kolumnen är deklarerad som INTEGER PRIMARY KEY
, den accepterar inte NULL
värden.
name
kolumnen deklareras också med en NOT NULL
begränsning, så den accepterar endast icke-NULL-värden.
Följande sats försöker infoga en NULL
i name
kolumnen för suppliers
tabell:
INSERT INTO suppliers(name)
VALUES(NULL);
Code language: SQL (Structured Query Language) (sql)
Satsen misslyckas på grund av NOT NULL
begränsningsöverträdelse. Här är felmeddelandet:
SQL Error [19]: [SQLITE_CONSTRAINT] Abort due to constraint violation (NOT NULL constraint failed: suppliers.name)
Code language: CSS (css)
I den här handledningen har du lärt dig hur du använder SQLite NOT NULL
begränsning för att säkerställa att värden i en kolumn inte är NULL.