- This method can also be used to create a constraint that allows only a single null for each non-null composite indexed value:
CREATE TABLE table (x INTEGER, y INTEGER);
CREATE UNIQUE INDEX i_table ON table (x, (y IS NULL)) WHERE y IS NULL;
INSERT INTO table VALUES (1, NULL);
INSERT INTO table VALUES (2, NULL);
INSERT INTO table VALUES (2, NULL);
ERROR: duplicate key value violates unique constraint "i_table"
DETAIL: Key (x, (y IS NULL))=(2, t) already exists.
INSERT INTO table VALUES (2, 3);
INSERT INTO table VALUES (2, 3);
- Текстовые поля луше делать всегда NOT NULL, но c default='', если необходимо пустое значение