@ReginaStart

Как записать последовательные значения max+1 в SQL без дублирования данных?

Добрый день, в laravel есть модель с таблицей,

Tickets:
- cabinet_id
- number
- time

Мы выбираем последнюю запись, в кабинет N, смотрим номер последней записи, после чего создаём новую запись с последним номером + 1, соответственно если в кабинет N была последняя запись под номером 10, то новая запись будет под номером 11( а если она перевалила за 999 мы присваиваем 1) , и всё прекрасно работает, но если отправить 2 запроса почти одновременно, с разницей менее 1 секунды, мы можем получить результат как :

10, 11, 11, 11, 12, 13

Я понимаю, что это происходит из за того что запросы выполняются параллельно, и на момент выборки запись 11 ещё не существует, и каждый запрос считает что может записать этот параметр, но по итогу создаются несколько разных записей с одним номером, как в Larave избежать такого дублирования ? AI как я понимаю не особо подходит для этого так как запись 11, может быть и в кабинет A,B,С так же как периодический повторятся когда обнуляется счётчик.
  • Вопрос задан
  • 78 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы