Riepilogo :in questo tutorial imparerai come usare SQLite NOT NULL
vincolo per garantire che i valori in una colonna non siano NULL
.
Introduzione a SQLite NOT NULL
vincolo
Quando crei una tabella, puoi specificare se una colonna accetta NULL
valori o meno. Per impostazione predefinita, tutte le colonne di una tabella accettano NULL
valori tranne per l'utilizzo esplicito di NOT NULL
vincoli.
Per definire un NOT NULL
vincolo per una colonna, si utilizza la seguente sintassi:
CREATE TABLE table_name (
...,
column_name type_name NOT NULL,
...
);
Code language: SQL (Structured Query Language) (sql)
A differenza di altri vincoli come PRIMARY KEY
e CHECK
, puoi solo definire NOT NULL
vincoli a livello di colonna, non a livello di tabella.
Basato sullo standard SQL, PRIMARY KEY
dovrebbe sempre implicare NOT NULL
. Tuttavia, SQLite consente NULL
valori nella PRIMARY KEY
colonna tranne per il fatto che una colonna è INTEGER PRIMARY KEY
la colonna o la tabella è un WITHOUT ROWID
la tabella o la colonna è definita come NOT NULL
colonna.
Ciò è dovuto a un bug in alcune prime versioni. Se questo bug viene corretto per conformarsi allo standard SQL, potrebbe danneggiare i sistemi legacy. Pertanto, è stato deciso di consentire NULL
valori nella PRIMARY KEY
colonna.
Una volta un NOT NULL
vincolo è allegato a una colonna, qualsiasi tentativo di impostare il valore della colonna su NULL
come l'inserimento o l'aggiornamento causerà una violazione del vincolo.
SQLite NOT NULL
esempio di vincolo
L'esempio seguente crea una nuova tabella denominata suppliers
:
CREATE TABLE suppliers(
supplier_id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
Code language: SQL (Structured Query Language) (sql)
In questo esempio, il supplier_id
è la PRIMARY KEY
colonna dei suppliers
tavolo. Perché questa colonna è dichiarata come INTEGER PRIMARY KEY
, non accetterà NULL
valori.
Il name
la colonna è anche dichiarata con un NOT NULL
vincolo, quindi accetterà solo valori non NULL.
La seguente istruzione tenta di inserire un NULL
nel name
colonna dei suppliers
tabella:
INSERT INTO suppliers(name)
VALUES(NULL);
Code language: SQL (Structured Query Language) (sql)
L'istruzione non riesce a causa di NOT NULL
violazione del vincolo. Ecco il messaggio di errore:
SQL Error [19]: [SQLITE_CONSTRAINT] Abort due to constraint violation (NOT NULL constraint failed: suppliers.name)
Code language: CSS (css)
In questo tutorial, hai imparato a usare SQLite NOT NULL
vincolo per garantire che i valori in una colonna non siano NULL.