@k49102

Как реализовать такой автоинкремент?

Добрый день!

Имеется приложение на laravel, база MySQL.

Необходимо реализовать таблицу товаров, где id (или какой-то дополнительный id) товара должен быть автоинкрементным для каждого пользователя индивидуально. Например, id товаров пользователя 1 - 1, 2, 3, id товаров пользователя 2 - 1, 2, 3 и т.д.

Автоинкремент должен быть "честным", т.е. удалив товар 3 у пользователя 1, у следующего товара будет id - 4.

Как это можно реализовать?

Способы, которые нашел - отдельная таблица со значением счетчика для каждого пользователя, увеличение через триггер (похожий вопрос - https://stackoverflow.com/a/18949951 ).

Возможно, есть какой-то более элегантный способ решения этого вопроса.
  • Вопрос задан
  • 139 просмотров
Пригласить эксперта
Ответы на вопрос 3
solotony
@solotony
покоряю пик Балмера
Добавь каждому пользователю в профиль простой счетчик товаров, и при добавлении товара для этого пользователя инкрементируй его.
Ответ написан
@morricone85
Автоинкремент должен быть "честным",

это вы, новый термин такой изобрели?)

т.е. удалив товар 3 у пользователя 1, у следующего товара будет id - 4.


не понятно, что вы хотите: после удаления 3 номера, вы, хотите новый товар с номером 4, а, если товар с таким номером уже есть, что тогда?
Ответ написан
idShura
@idShura
Можно сделать таблицу в которой будут храниться последовательности ("честный" автоинкримент :)) и написать функцию. На вход функции будет передаваться id пользователя, а на выходе будет дополнительный id для этого пользователя.
Пример

upd. Таблицу последовательностей создавать не обязательно, можно как писал Antonio Solo хранить эту информацию в профиле пользователя.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы