Проблема: при удалении пользователя соответствующая запись не удаляется из базы данных. Вместо этого я установил 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
Приведенный выше наивный подход накладывает составное ограничение на столбцы (электронная почта, удаление), но он не работает, поскольку в следующем потоке пользователь заблокирован от удаления и создания учетной записи:
- регистрация нового пользователя по электронной почте "E"
- удалить пользователя с электронной почтой "E"
- зарегистрировать нового пользователя по электронной почте "E"
- удалить пользователя с электронной почтой "E" -> ошибка: нарушение ограничения
- зарегистрировать нового пользователя по электронной почте "E" -> ошибка: нарушение ограничения
пс. базы данных H2 и PostgreSQL