Невозможно иметь условный индекс базы данных для большинства баз данных, например, MySQL.
Вероятно, лучшим вариантом, если вы абсолютно обязаны гарантировать уникальность, было бы наличие отдельной таблицы удаленных сообщений.У вас есть уникальный индекс в главной таблице, но не в таблице, содержащей удаленные записи.В итоге вы получили бы таблицу сообщений меньшего размера и более простое кодирование - больше нет необходимости отфильтровывать удаленные сообщения в каких-либо запросах.
Рассматривали ли вы, что должно произойти, если вы удалите сообщение - может два сообщения затем иметьтот же заголовок?
Некоторые другие параметры:
- Изменение заголовка при удалении сообщения, например, добавление метки времени.
- Вызов исключения после моделисохраняется, если вы можете найти 2 или более экземпляров одного и того же заголовка.
- Блокировка всей таблицы перед сохранением (пессимистическая блокировка).
- Просто надеюсь, что это сработает (как часто вы собираетесьдва человека публикуют один и тот же заголовок в одно и то же время?)