Podsumowanie :w tym samouczku dowiesz się, jak używać SQLite NOT NULL
ograniczenie zapewniające, że wartości w kolumnie nie są NULL
.
Wprowadzenie do SQLite NOT NULL
ograniczenie
Podczas tworzenia tabeli możesz określić, czy kolumna akceptuje wartość NULL
wartości, czy nie. Domyślnie wszystkie kolumny w tabeli akceptują NULL
wartości, z wyjątkiem tego, że jawnie używasz NOT NULL
ograniczenia.
Aby zdefiniować NOT NULL
ograniczenie dla kolumny, użyj następującej składni:
CREATE TABLE table_name (
...,
column_name type_name NOT NULL,
...
);
Code language: SQL (Structured Query Language) (sql)
W przeciwieństwie do innych ograniczeń, takich jak PRIMARY KEY
i CHECK
, możesz zdefiniować tylko NOT NULL
ograniczenia na poziomie kolumny, a nie na poziomie tabeli.
Oparty na standardzie SQL, PRIMARY KEY
powinno zawsze oznaczać NOT NULL
. Jednak SQLite pozwala na NULL
wartości w PRIMARY KEY
kolumna z wyjątkiem tego, że kolumna to INTEGER PRIMARY KEY
kolumna lub tabela jest WITHOUT ROWID
tabela lub kolumna jest zdefiniowana jako NOT NULL
kolumna.
Wynika to z błędu w niektórych wczesnych wersjach. Jeśli ten błąd zostanie naprawiony tak, aby był zgodny ze standardem SQL, może to spowodować uszkodzenie starszych systemów. Dlatego zdecydowano się zezwolić na NULL
wartości w PRIMARY KEY
kolumna.
Po NOT NULL
ograniczenie jest dołączone do kolumny, każda próba ustawienia wartości kolumny na NULL
takie jak wstawianie lub aktualizowanie spowoduje naruszenie ograniczenia.
SQLite NOT NULL
przykład ograniczenia
Poniższy przykład tworzy nową tabelę o nazwie suppliers
:
CREATE TABLE suppliers(
supplier_id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
Code language: SQL (Structured Query Language) (sql)
W tym przykładzie supplier_id
to PRIMARY KEY
kolumna suppliers
stół. Ponieważ ta kolumna jest zadeklarowana jako INTEGER PRIMARY KEY
, nie zaakceptuje NULL
wartości.
name
kolumna jest również zadeklarowana z NOT NULL
ograniczenie, więc zaakceptuje tylko wartości inne niż NULL.
Poniższa instrukcja próbuje wstawić NULL
w name
kolumna suppliers
tabela:
INSERT INTO suppliers(name)
VALUES(NULL);
Code language: SQL (Structured Query Language) (sql)
Instrukcja nie powiedzie się z powodu NOT NULL
naruszenie ograniczenia. Oto komunikat o błędzie:
SQL Error [19]: [SQLITE_CONSTRAINT] Abort due to constraint violation (NOT NULL constraint failed: suppliers.name)
Code language: CSS (css)
W tym samouczku nauczyłeś się korzystać z SQLite NOT NULL
ograniczenie zapewniające, że wartości w kolumnie nie są NULL.