Я создаю и редактирую группы. Мне нужно проверить, не используется ли уже имя группы, прежде чем создавать новую группу с этим именем или менять имя существующей группы на это имя.
Проблема заключается в том, что два параллельных потока могут одновременно проверять имя группы, а затем каждый поток может добавить свою собственную группу. Дубликаты имен!
Я не думаю, что смогу использовать встроенные транзакции, потому что эти группы должны быть в разных группах сущностей, а имя не является частью ключа. Что я могу сделать?
Имеет ли смысл создавать своего рода индексную сущность, которая использует имя группы в ключе, чтобы я мог выполнить запрос предка, чтобы выбрать и создать имя атомарно? Успешное создание объекта индекса будет служить разрешением для выполнения нетранзакционного кода. Я хотел бы надеяться на более простое решение, которое не требует совершенно нового типа сущности.