Добрый день! Есть система принятия заказов yii и mysql, при занесении заказа открывается форма она заполняется и сохраняется в БД все реализовано в одном экшене, заказчик хочет что бы при открытии формы показывался номер будущего заказа, самое простое решение пришло в голову это просто доставать id и прибавлять к нему +1 и выводить юзеру, но при параллельном занесении заказа может произойти коллапс в голове пользователя, как можно еще провернуть такое действие?
И что? Пусть себе висит.
Даже mediumint попробуйте забить, хотя бы за 10 лет (4,5 тысячи заказов ежедневно!). А это всего-навсего мелкий mediumint, а не int и не bigint.
Никак. От генерации ID сущностей перед их созданием отказались даже в платформе 1C.
Можете при коллизии номеров с сервера возвращать ошибку и новый порядковый номер. Но это бред, на самом деле. Потому что если номер нужен сразу, то на основании этого номера что-то будут делать, кому-то его сообщать.
А если после сохранения он может стать неактуальным - то какой смысл?
Еще хардкорный вариант - вести на сервере глобальный счетчик, который будет увеличиваться даже если заказ не сохранен. В этом случае у вас будут возникать дыры в нумерации, когда заказ начали заполнять и не сохранили. Но вашу конкретную задачу это решит.