- Регистрация
- 14.12.2021
- Сообщения
- 65
- Благодарностей
- 6
- Баллы
- 8
Перечитал топики на эту тему, но не совсем понял, что лучше применить в моём случае. Как я понял, в идеале, сделать по этой статье, чтобы каждый поток работал со своей сессией, но это для меня пока сложновато и треубует времени, а у меня сроки горят и хочется сделать доступным, пусть и не очень правильным способом, через костыли. Вроде бы этот способ мне подходит, но есть вопросы.
Допустим, в базе 100 строк и у каждой строки уникальный id, от 1 до 100. Добавляю столбец "статус". В зенке генерирую рандомно число от 1 до 100, беру в базе строку, у которой такой айди и "статус"="свободен". После этого, ещё один запрос, который меняет статус на "занят".
Вопрос: А если одновременно несколько потоков возьмут один и тот же айди (например, в промежутке между запросами select и update)? Можно ли этого избежать или они по очереди делают запросы к бд (где то видел такую инфу, но не уверен в том, что конкретно имеется ввиду)?
Допустим, в базе 100 строк и у каждой строки уникальный id, от 1 до 100. Добавляю столбец "статус". В зенке генерирую рандомно число от 1 до 100, беру в базе строку, у которой такой айди и "статус"="свободен". После этого, ещё один запрос, который меняет статус на "занят".
Вопрос: А если одновременно несколько потоков возьмут один и тот же айди (например, в промежутке между запросами select и update)? Можно ли этого избежать или они по очереди делают запросы к бд (где то видел такую инфу, но не уверен в том, что конкретно имеется ввиду)?