Автоинкремент неуникальный столбец - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь создать систему очередей для предварительных заказов для нашего интернет-магазина.Иногда у нас больше заказов, чем на складе, для нескольких поставок на наш склад, и я пытаюсь организовать так, чтобы люди, которые сделали заказы, сначала получили свои продукты первыми.

Проблема возникает, когда клиент хочет сделатьизменение заказа, например, добавив что-то к нему.Для целей бронирования мы делаем возврат первого заказа в нашу систему, которая создает другой заказ, а затем, наконец, создаем новый заказ со всем на нем.Это заставляет этого клиента быть последним в списке очередей в нашей текущей системе, куда мы переходим по дате создания.

Что я хотел бы сделать, так это скопировать исходное место в очереди в новый заказ без лишних хлопотдо автоинкремента.Это также означает, что будет три заказа (Оригинал, плюс возврат, плюс новый) с одним и тем же номером.

id  | order   | queue | ordercomment
1   | 1001    | 1     | new order
2   | 1002    | 2     | new order
3   | 1003    | 3     | new order
4   | 1004    | 1     | return order 1001
5   | 1005    | 1     | corrected order 1001
6   | 1006    | 4     | new order

Есть ли способ справиться с этим без принятия решения с приращением вручную, которое проверяет текущийнаибольшее число при оформлении заказа?

1 Ответ

0 голосов
/ 20 февраля 2019

куда мы идем по дате создания

Но у ваших данных такой даты нет.Вы полагаетесь на приращения целых чисел для определения порядка сортировки, и именно здесь у вас возникают проблемы.

Если вы хотите отсортировать по дате создания, сохраните дату, когда был создан заказ.Каждый раз, когда вы изменяете, добавляете или иным образом воссоздаете заказ, вы можете сохранить первоначальную дату заказа.Возможно, с двумя столбцами: дата текущего заказа и дата первоначального заказа.(Для большинства заказов эти два значения будут одинаковыми, но в этом нет ничего плохого.)

Тогда вашим приоритетом будет просто дата исходного заказа.

По сути, донне пытайтесь использовать целое число в качестве метки времени.Используйте метку времени.

...