Как обеспечить уникальность со значениями NULL в БД тараканов - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть таблица счетов, которая генерирует уникальные ключи с последовательностью.Он используется для генерации уникальных идентификаторов для учетных записей и пар учетных записей / пользователей.

Я попробовал следующее из pgsql:

CREATE INDEX ON accounts (account_id, user_id) WHERE user_id IS NULL;

и

CREATE UNIQUE INDEX ON accounts (account_id, COALESCE(user_id, ''));

Но в обоих случаяхне поддерживаются тараканом.

Есть ли другой способ обеспечения уникальности со значениями NULL?

У меня также есть другой индекс UNIQUE для user_id, позволяющий генерировать уникальные идентификаторы для пользователей безаккаунт.

1 Ответ

0 голосов
/ 19 сентября 2018

Вы можете сделать что-то вроде создания вычисляемого столбца и затем использовать его в индексе:

alter table accounts add column user_null int null as (coalesce(user_id, 0));
create unique index on accounts (account_id, user_null);
...