Kiedy tworzymy tabelę w ten sposób:
CREATE TABLE people (
age INT,
name CHAR(20)
);
SQL swobodnie akceptuje puste wartości jako rekordy:
INSERT INTO people VALUES (null, null);
To może być problem, ponieważ teraz mamy wiersz z wartościami null:
age | name
-----+--------
37 | Flavio
8 | Roger
|
Aby rozwiązać ten problem, możemy zadeklarować ograniczenia w naszych wierszach tabeli. NOT NULL
zapobiega wartościom zerowym:
CREATE TABLE people (
age INT NOT NULL,
name CHAR(20) NOT NULL
);
Jeśli spróbujemy ponownie wykonać to zapytanie:
INSERT INTO people VALUES (null, null);
Otrzymalibyśmy błąd taki:
ERROR: null value in column "age" violates not-null constraint
DETAIL: Failing row contains (null, null).
Zwróć uwagę, że pusty ciąg jest prawidłową wartością inną niż null.