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.