Quando creiamo una tabella in questo modo:
CREATE TABLE people (
age INT,
name CHAR(20)
);
SQL accetta liberamente valori vuoti come record:
INSERT INTO people VALUES (null, null);
Questo potrebbe essere un problema, perché ora abbiamo una riga con valori null:
age | name
-----+--------
37 | Flavio
8 | Roger
|
Per risolvere questo problema, possiamo dichiarare vincoli sulle righe della nostra tabella. NOT NULL
impedisce valori nulli:
CREATE TABLE people (
age INT NOT NULL,
name CHAR(20) NOT NULL
);
Se proviamo a eseguire nuovamente questa query:
INSERT INTO people VALUES (null, null);
Otterremmo un errore, come questo:
ERROR: null value in column "age" violates not-null constraint
DETAIL: Failing row contains (null, null).
Nota che una stringa vuota è un valore non null valido.