Postgres: уникальное ограничение для столбца A, столбца B [значение1] - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть таблица applications, в которой есть user_id, status среди других полей. status может быть [0,1,2].

Мне нужно наложить ограничение на то, что в таблице приложений не может быть несколько строк, имеющих одинаковое user_id в 0 состоянии. Однако может быть несколько строк, имеющих user_id в статусе 1 или 2.

Для демонстрации это не разрешено:

user_id | status
abc     | 0
abc     | 0

Но это разрешено:

user_id | status
abc     | 1
abc     | 1

Как наложить такое ограничение? Я использую Postgres.

1 Ответ

2 голосов
/ 06 ноября 2019

Для этого вы можете использовать отфильтрованный уникальный индекс:

create unique index on applications (user_id)
where status = 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...