sql >> Database teknologi >  >> RDS >> SQLite

SQLite NOT NULL-begrænsning

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.


  1. Hvordan forhindrer SQLParameter SQL-injektion?

  2. FEJL:kolonne med relation eksisterer ikke PostgreSQL, Kan ikke køre indsæt forespørgsel

  3. Skjulte funktioner i SQL Server

  4. Hvorfor kan jeg ikke bruge alias i en count(*) kolonne og henvise til det i en have-sætning?