Приветствую всех! Переодически, встречая подобные вопросы, у меня самого "лицо в руки падало", но вот и сам вляпался. Тот кто работал с заказчиками-мозгоё[ цензура] меня поймет.
В общем, записи в БД имеют поле: `order_id` (AUTO_INCREMENT, PRIMARY KEY) и поле `order_num` (не уникальное и без автоинкремента). С первым всё понятно - оно исключительно для работы. А вот второе поле - "номер заказа" - может иметь значение "0", если заказ еще не принят в работу и, если уже принят, то порядковый номер. При этом не должно быть пропусков в нумерации, даже если где-нибудь из середины запись будет удалена.
Решения найденные мной, в большинстве случаев, совпадают с найденными в инете. Все они, как и сама задача, позитивных эмоций не вызывают, поэтому решил посоветоваться с сообществом и найти оптимальный выход из дурацкого положения. Основной принцип в найденных решениях: вытащить все номера, проверить на php присутствие "пробелов", если есть, то взять пропущенное число, если нет - то максимальное + 1 и записать в базу. Конечно "ужос, летящий на крыльях ночи", но жопаделать... (Отредактировано автором: 13 Января, 2014 - 09:54:00)
|