LINUX.ORG.RU

CHECK и UNIQUE в PostgreSQL

 , , , ,


0

2

Как написать проверку, которая требовала бы уникальность набора столбцов(как UNIQUE), но не для всех записей, а только для тех, которые удовлетворяют определенному условию(если определенное поле-флаг true).

Пока что в голову приходит только:

  • Проверять флаг в CHECK и вставлять в разные партиции для той партиции в которую будут попадать записи у которых флаг true сделать UNIQUE
  • Добавить фиктивное поле к полям проверяемым в UNIQUE. Для записей у которых флаг true фиктивное поле должно быть одинаковым. Для остальных записей фиктивное поле должно быть уникально.

Оба варианта мне не очень нравятся.



Последнее исправление: mythCreator (всего исправлений: 2)

Какой-то бред делаешь. Просто создавай констрейнт по двум полям и все.

nikolnik ★★★
()

Сделай это определённое поле не true/false а true/NULL

unC0Rr ★★★★★
()

Как написать проверку, которая требовала бы уникальность набора столбцов(как UNIQUE), но не для всех записей, а только для тех, которые удовлетворяют определенному условию

Лол :-) Это можно сделать с помощью частичных индексов :-)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.