Начиная с версии 7.2, вы можете использовать частичные индексы в PostgreSql
Добавить предложение where
в оператор create index
, чтобы сделать его частичным индексом:
CREATE UNIQUE INDEX users_email_unique ON tests (email)
WHERE NOT is_deleted; -- assuming is_deleted is Boolean
Хотя PostgreSql поддерживает Alter index
, насколько я понимаю из документации, изменение ограничивается либо переименованием, либо настройкой табличного пространства.
Это означает, что вам потребуется отбросить и заново создать индекс, чтобы превратить его в частичный индекс:
DROP INDEX users_email_unique;
CREATE UNIQUE INDEX users_email_unique ON tests (email)
WHERE NOT is_deleted; -- assuming is_deleted is Boolean