Oversigt :i denne vejledning lærer du, hvordan du bruger SQLite NOT NULL
begrænsning for at sikre, at værdierne i en kolonne ikke er NULL
.
Introduktion til SQLite NOT NULL
begrænsning
Når du opretter en tabel, kan du angive, om en kolonne acceptererNULL
værdier eller ej. Som standard accepterer alle kolonner i en tabel NULL
værdier, bortset fra at du eksplicit bruger NOT NULL
begrænsninger.
For at definere en NOT NULL
begrænsning for en kolonne, bruger du følgende syntaks:
CREATE TABLE table_name (
...,
column_name type_name NOT NULL,
...
);
Code language: SQL (Structured Query Language) (sql)
I modsætning til andre begrænsninger såsom PRIMARY KEY
og CHECK
, kan du kun definere NOT NULL
begrænsninger på kolonneniveau, ikke tabelniveau.
Baseret på SQL-standarden, PRIMARY KEY
bør altid indebære NOT NULL
. SQLite tillader dog NULL
værdier i PRIMARY KEY
kolonne, bortset fra at en kolonne er INTEGER PRIMARY KEY
kolonne eller tabellen er en WITHOUT ROWID
tabellen eller kolonnen er defineret som en NOT NULL
kolonne.
Dette skyldes en fejl i nogle tidlige versioner. Hvis denne fejl rettes, så den er i overensstemmelse med SQL-standarden, kan den ødelægge de gamle systemer. Derfor er det blevet besluttet at tillade NULL
værdier i PRIMARY KEY
kolonne.
En gang en NOT NULL
begrænsning er knyttet til en kolonne, ethvert forsøg på at sætte kolonneværdien til NULL
såsom indsættelse eller opdatering vil forårsage en overtrædelse af begrænsninger.
SQLite NOT NULL
begrænsningseksempel
Følgende eksempel opretter en ny tabel med navnet suppliers
:
CREATE TABLE suppliers(
supplier_id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
Code language: SQL (Structured Query Language) (sql)
I dette eksempel er supplier_id
er den PRIMARY KEY
kolonne af suppliers
bord. Fordi denne kolonne er erklæret som INTEGER PRIMARY KEY
, accepterer den ikke NULL
værdier.
name
kolonne er også erklæret med en NOT NULL
begrænsning, så den accepterer kun ikke-NULL-værdier.
Følgende sætning forsøger at indsætte en NULL
ind i name
kolonne af suppliers
tabel:
INSERT INTO suppliers(name)
VALUES(NULL);
Code language: SQL (Structured Query Language) (sql)
Sætningen mislykkes på grund af NOT NULL
overtrædelse af begrænsninger. Her er fejlmeddelelsen:
SQL Error [19]: [SQLITE_CONSTRAINT] Abort due to constraint violation (NOT NULL constraint failed: suppliers.name)
Code language: CSS (css)
I denne øvelse har du lært, hvordan du bruger SQLite NOT NULL
begrænsning for at sikre, at værdier i en kolonne ikke er NULL.