У меня есть таблица "группы" столбцы (id, min_num, max_num, ..... name и т. Д.)
с отношением один ко многим "пользователи" столбцы таблицы (id, num, group_id, ...... name и т. д.)
и еще 4 таблицы ..
У меня есть транзакция регистрации, которая генерирует уникальный порядковый номер для пользователя.
когда выполнить один за другим, все будет хорошо ...
при одновременном выполнении 10 потоков .. тогда возникают конфликты !!
То, что я думаю, произошло за одну секунду:
- пользователь Регистр запроса, позволяющий системе запустить транзакцию и добавленный к 4 другим таблицам, сгенерировать число (1) в зависимости от min-max в группе пользователей и максимального числа в таблице пользователей, еще не зафиксировано.
- Пользовательский запрос B регистрируется, так что система запускает транзакцию и добавляется в 4 другие таблицы и генерирует число (1) в зависимости от min-max в группе пользователей и максимального числа в таблице пользователей, еще не зафиксировано.
- пользователь A коммит (выполнено, поэтому номер 1 находится в БД).
- пользователь B фиксирует ( ОШИБКА , номер 1 не уникален).
как мне избежать этой проблемы?