Lorsque nous créons une table de cette manière :
CREATE TABLE people (
age INT,
name CHAR(20)
);
SQL accepte librement les valeurs vides comme enregistrements :
INSERT INTO people VALUES (null, null);
Cela peut poser problème, car nous avons maintenant une ligne avec des valeurs nulles :
age | name
-----+--------
37 | Flavio
8 | Roger
|
Pour résoudre ce problème, nous pouvons déclarer des contraintes sur nos lignes de table. NOT NULL
empêche les valeurs nulles :
CREATE TABLE people (
age INT NOT NULL,
name CHAR(20) NOT NULL
);
Si nous essayons d'exécuter à nouveau cette requête :
INSERT INTO people VALUES (null, null);
Nous aurions une erreur, comme celle-ci :
ERROR: null value in column "age" violates not-null constraint
DETAIL: Failing row contains (null, null).
Notez qu'une chaîne vide est une valeur non nulle valide.