SQLite
 sql >> Datenbank >  >> RDS >> SQLite

SQLite NOT NULL-Einschränkung

Zusammenfassung :In diesem Tutorial lernen Sie, wie Sie den SQLite NOT NULL verwenden Einschränkung, um sicherzustellen, dass die Werte in einer Spalte nicht NULL sind .

Einführung in SQLite NOT NULL Einschränkung

Wenn Sie eine Tabelle erstellen, können Sie angeben, ob eine Spalte NULL akzeptiert Werte oder nicht. Standardmäßig akzeptieren alle Spalten in einer Tabelle NULL Werte, außer Sie verwenden explizit NOT NULL Einschränkungen.

Um ein NOT NULL zu definieren Einschränkung für eine Spalte verwenden Sie die folgende Syntax:

CREATE TABLE table_name (
    ...,
    column_name type_name NOT NULL,
    ...
);
Code language: SQL (Structured Query Language) (sql)

Im Gegensatz zu anderen Einschränkungen wie PRIMARY KEY und CHECK , können Sie nur NOT NULL definieren Einschränkungen auf Spaltenebene, nicht auf Tabellenebene.

Basierend auf dem SQL-Standard, PRIMARY KEY sollte immer NOT NULL implizieren . SQLite erlaubt jedoch NULL Werte im PRIMARY KEY Spalte, außer dass eine Spalte INTEGER PRIMARY KEY ist Spalte oder die Tabelle ist eine WITHOUT ROWID Tabelle oder die Spalte ist als NOT NULL definiert Spalte.

Dies ist auf einen Fehler in einigen frühen Versionen zurückzuführen. Wenn dieser Fehler behoben wird, um dem SQL-Standard zu entsprechen, kann er die Legacy-Systeme beschädigen. Daher wurde entschieden, NULL zuzulassen Werte im PRIMARY KEY Spalte.

Einmal ein NOT NULL Einschränkung an eine Spalte angehängt ist, jeder Versuch, den Spaltenwert auf NULL zu setzen wie das Einfügen oder Aktualisieren führt zu einer Einschränkungsverletzung.

SQLite NOT NULL Einschränkungsbeispiel

Das folgende Beispiel erstellt eine neue Tabelle mit dem Namen suppliers :

CREATE TABLE suppliers(
    supplier_id INTEGER PRIMARY KEY,
    name TEXT NOT NULL
);
Code language: SQL (Structured Query Language) (sql)

In diesem Beispiel die supplier_id ist der PRIMARY KEY Spalte der suppliers Tisch. Denn diese Spalte ist als INTEGER PRIMARY KEY deklariert , wird NULL nicht akzeptiert Werte.

Der name Spalte wird auch mit einem NOT NULL deklariert Einschränkung, sodass nur Nicht-NULL-Werte akzeptiert werden.

Die folgende Anweisung versucht, einen NULL einzufügen in den name Spalte der suppliers Tabelle:

INSERT INTO suppliers(name)
VALUES(NULL);
Code language: SQL (Structured Query Language) (sql)

Die Anweisung schlägt aufgrund von NOT NULL fehl Constraint-Verletzung. Hier ist die Fehlermeldung:

SQL Error [19]: [SQLITE_CONSTRAINT]  Abort due to constraint violation (NOT NULL constraint failed: suppliers.name)Code language: CSS (css)

In diesem Tutorial haben Sie gelernt, wie Sie SQLite NOT NULL verwenden Einschränkung, um sicherzustellen, dass Werte in einer Spalte nicht NULL sind.