@IvanOne

Как провернуть такую операцию в mysql?

Добрый день! Есть система принятия заказов yii и mysql, при занесении заказа открывается форма она заполняется и сохраняется в БД все реализовано в одном экшене, заказчик хочет что бы при открытии формы показывался номер будущего заказа, самое простое решение пришло в голову это просто доставать id и прибавлять к нему +1 и выводить юзеру, но при параллельном занесении заказа может произойти коллапс в голове пользователя, как можно еще провернуть такое действие?
  • Вопрос задан
  • 2200 просмотров
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
Регистрируйте заказ в БД раньше. Соответственно, со статусом "не подтверждён".
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Собственно @Melkij все правильно написал.
Заодно у заказчика в базе будет статистика сколько людей не заполняет эту форму :)
Ответ написан
Комментировать
AMar4enko
@AMar4enko
Никак. От генерации ID сущностей перед их созданием отказались даже в платформе 1C.
Можете при коллизии номеров с сервера возвращать ошибку и новый порядковый номер. Но это бред, на самом деле. Потому что если номер нужен сразу, то на основании этого номера что-то будут делать, кому-то его сообщать.
А если после сохранения он может стать неактуальным - то какой смысл?
Еще хардкорный вариант - вести на сервере глобальный счетчик, который будет увеличиваться даже если заказ не сохранен. В этом случае у вас будут возникать дыры в нумерации, когда заказ начали заполнять и не сохранили. Но вашу конкретную задачу это решит.
Ответ написан
Комментировать
@IvanOne Автор вопроса
Всем спасибо!
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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