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

SQLite NOT NULL Vincolo

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.