@ortsuev33

Как взять id будущей записи?

Есть имя_товара нужно получить id который будет у этой записи в бд при вставке, т.е на сайте у меня будет строка имятовара_id потом строку разобью и получу товар по ид. Мне нужен так сказать будущий id этой записи, и ещё чисто теоретически если запрос длился бы 1мин прт инсерте как бы распределялись id записей Autoincr у обоих записей было бы id одинаковое или сразу сформировалось по очереди,вопрос к тому что может быть когда один инсерт не прошел а идет уже второй
  • Вопрос задан
  • 2451 просмотр
Решения вопроса 1
@poniyur
Если insert долгий, то сделайте сначала просто insert с пустыми данными.
Тогда запрос пройдёт быстро, id будет. Далее используете update.
Тут есть пример на PDO как получить последний вставленный id записи, которую вы и будете update'ить
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 5
usdglander
@usdglander
Yipee-ki-yay
Для получения следующего значения автоинкрементируемого поля можно использовать запрос:
SELECT `auto_increment` FROM INFORMATION_SCHEMA.TABLES WHERE table_name = 'tablename'

Но как совершенно верно заметил коллега Александр - идея абсолютно идиотская.
Ответ написан
xpert13
@xpert13
Full Stack Developer
Никак нормально вы не получите id будущей записи. Если вам нужно использовать id - то сначала делается вставка, получается id, а уже потом редактирование с добавление этого id куда вам необходимо.
Ответ написан
Комментировать
LobsterJoe
@LobsterJoe
Откажитесь от использования автоинкрементного Id.
Я бы использовал вызов вот этой библиотеки в конструкторе объекта для генерации Id. Вероятность коллизий настолько мала, что ей можно пренебречь.
Ответ написан
Хотя идея бредовая сама по себе, но я бы решал так - сделал бы в базу запись где все поля пусты, взял бы ее id и исползовал, а когда в будущем бы потребовалось добавить товар с этим его будущем id проапдейтил бы эту запись.
Ответ написан
ixon
@ixon

С помощью SQL запросите максимальный элемент таблицы в поле id и добавьте к нему 1. Это и будет идентификатор будущей новой записи.
MAX(id)+1
Ответ написан
Ваш ответ на вопрос

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

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