The following bug has been logged on the website:
Bug reference: 8141
Logged by: Andras Vaczi
Email address: andras.vaczi@zalando.de
PostgreSQL version: 9.1.9
Operating system: linux/Ubuntu 12.10
Description: =
Consider the following table with a CHECK constraint:
CREATE TABLE check_test
(
id integer NOT NULL,
col integer,
CONSTRAINT unique_with_null_check1 CHECK (col >=3D 1 AND id < 20)
);
This INSERT statement succeeds:
INSERT INTO check_test (id, col) VALUES (1, NULL);
While, col being NULL, the whole CHECK condition evaluates to NULL - this is
covered in the documentation.
But this is refused:
INSERT INTO check_test (id, col) VALUES (21, NULL);
ERROR: new row for relation "check_test" violates check constraint
"unique_with_null_check1"
I think this behaviour should be either also mentioned in the docs or
cosidered a bug.