Quando criamos uma tabela desta forma:
CREATE TABLE people (
age INT,
name CHAR(20)
); SQL aceita livremente valores vazios como registros:
INSERT INTO people VALUES (null, null); Isso pode ser um problema, porque agora temos uma linha com valores nulos:
age | name
-----+--------
37 | Flavio
8 | Roger
| Para resolver isso, podemos declarar restrições nas linhas da nossa tabela.
NOT NULL impede valores nulos:CREATE TABLE people (
age INT NOT NULL,
name CHAR(20) NOT NULL
); Se tentarmos executar esta consulta novamente:
INSERT INTO people VALUES (null, null); Receberíamos um erro, assim:
ERROR: null value in column "age" violates not-null constraint
DETAIL: Failing row contains (null, null).
Observe que uma string vazia é um valor não nulo válido.