SQLite
 sql >> Base de données >  >> RDS >> SQLite

Contrainte SQLite NOT NULL

Résumé :dans ce tutoriel, vous apprendrez à utiliser le SQLite NOT NULL contrainte pour s'assurer que les valeurs d'une colonne ne sont pas NULL .

Introduction à SQLite NOT NULL contrainte

Lorsque vous créez une table, vous pouvez spécifier si une colonne accepte NULL valeurs ou non. Par défaut, toutes les colonnes d'une table acceptent NULL sauf que vous utilisez explicitement NOT NULL contraintes.

Pour définir un NOT NULL contrainte pour une colonne, vous utilisez la syntaxe suivante :

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

Contrairement à d'autres contraintes telles que PRIMARY KEY et CHECK , vous ne pouvez définir que NOT NULL contraintes au niveau de la colonne, pas au niveau de la table.

Basé sur le standard SQL, PRIMARY KEY doit toujours impliquer NOT NULL . Cependant, SQLite autorise NULL valeurs dans la PRIMARY KEY colonne sauf qu'une colonne est INTEGER PRIMARY KEY colonne ou la table est un WITHOUT ROWID table ou la colonne est définie comme NOT NULL colonne.

Cela est dû à un bogue dans certaines versions antérieures. Si ce bogue est corrigé pour se conformer à la norme SQL, il pourrait alors casser les systèmes hérités. Par conséquent, il a été décidé d'autoriser NULL valeurs dans la PRIMARY KEY colonne.

Une fois un NOT NULL contrainte est attachée à une colonne, toute tentative de définition de la valeur de la colonne sur NULL telles que l'insertion ou la mise à jour entraînera une violation de contrainte.

SQLite NOT NULL exemple de contrainte

L'exemple suivant crée une nouvelle table nommée suppliers :

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

Dans cet exemple, le supplier_id est la PRIMARY KEY colonne des suppliers table. Parce que cette colonne est déclarée comme INTEGER PRIMARY KEY , il n'acceptera pas NULL valeurs.

Le name la colonne est également déclarée avec un NOT NULL contrainte, il n'acceptera donc que des valeurs non NULL.

L'instruction suivante tente d'insérer un NULL dans le name colonne des suppliers tableau :

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

L'instruction échoue en raison du NOT NULL violation de contrainte. Voici le message d'erreur :

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

Dans ce tutoriel, vous avez appris à utiliser SQLite NOT NULL contrainte pour s'assurer que les valeurs d'une colonne ne sont pas NULL.