Трюк дня. Частичные ограничения на значения в PostgreSQL. Решение
Для решения данной задачи используем механизм частичных индексов (partial indices).
#tips
Для решения данной задачи используем механизм частичных индексов (partial indices).
CREATE TABLE foobar(bar TEXT, bing BOOLEAN);В результате выполнения последнего
CREATE UNIQUE INDEX baz_index ON foobar(bar, bing) WHERE bing = 't';
INSERT INTO foobar VALUES('1','t');
INSERT INTO foobar VALUES('2','t');
INSERT INTO foobar VALUES('1','f');
INSERT INTO foobar VALUES('1','f');
INSERT INTO foobar VALUES('1','t');
INSERT
получим следующее сообщение:ERROR: duplicate key value violates unique constraint «baz_index»
#tips