Как добавить условное уникальное ограничение в Liquibase? - PullRequest
0 голосов
/ 05 мая 2019

Проблема: при удалении пользователя соответствующая запись не удаляется из базы данных. Вместо этого я установил user.delete столбец на true. Теперь мне нужно наложить уникальное ограничение на user.email, но только для активных пользователей (не удалено).

Как я могу это сделать?

databaseChangeLog:
  - changeSet:
      id: add-user-unique-constraint
      author: me
      changes:
        - addUniqueConstraint:
            columnNames: email, delete
            constraintName: unique-email-not-deleted
            tableName: users

Приведенный выше наивный подход накладывает составное ограничение на столбцы (электронная почта, удаление), но он не работает, поскольку в следующем потоке пользователь заблокирован от удаления и создания учетной записи:

  1. регистрация нового пользователя по электронной почте "E"
  2. удалить пользователя с электронной почтой "E"
  3. зарегистрировать нового пользователя по электронной почте "E"
  4. удалить пользователя с электронной почтой "E" -> ошибка: нарушение ограничения
  5. зарегистрировать нового пользователя по электронной почте "E" -> ошибка: нарушение ограничения

пс. базы данных H2 и PostgreSQL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...