Меню Закрыть

Php mysql получить id добавленной записи

Для InnoDB (движок гарантирует последовательную вставку для полей с AUTO_INCREMENT):
1. Выставить настройку innodb_autoinc_lock_mode=1 (по умолчанию)
2. Cделать INSERT.
3. Получить LAST_INSERT_ID().
4. Получить ROW_COUNT().
5. Сгенерировать id записей на основании двух предыдущих пунктов.

Для всех:
1. Добавить поле "batch_id" с индексацией по нему.
2. При подготовке данных всем элементам пачки поставить сгенерированный batch_id
3. После INSERT сделать SELECT по bacth_id

  1. открыть транзакцию
  2. добавить записи
  3. подтвердить транзакцию
  4. получить текущий AUTO_INCREMENT
  5. получть insert_id

* Теоретически, id добавленных записей [insert_id. AUTO_INCREMENT-1]

Одна из причин по которой лично я перешел на Postgresql. Там есть RETURNING который может вернуть любое поле из вставленной строки, не только ID. Если нет ни каких специфичных кейсов использовать РСУБД, то переход получается простой.

Касательно контексте задачи. Предположу, что нужно фронту/клиенту получить идентификаторы вставляемых записей. Но решить указанную проблему можно зайдя с другой стороны. Идентификаторы генерировать на клиенте (т.е. условый ID записей известны уже ДО вставки в базу). В качестве такого идентификатора лучше использовать UUID реализация которого есть абсолютно во всех популярных языках.

Новичок

как сразу получить ID токо что добавленной записи

при добавлении заказа если не выбран клиент, то его заполняют руками,

клиенты и заказы заносятся в разные таблицы, и в таблице с заказами , у каждого заказа, есть поле в которое записывается id клиента

и если клиент новый то нужно добавить его в таблу с клиентами, и узнать id с которым он записался чтобы этот id использовать при записи заказа.

такой вариант как сейчас есть не годиться так как замечено уже несколько раз — бывает такое что заказу не присваивается id клиента

Читайте также:  Блютуз модуль для ноутбука asus

можно ли просто записать клиента и сразу вернуть id c которым он записался?

На данный вопрос уже ответили:

Подскажите пожалуйста, как можно получить id только что созданной записи в таблице sql с помощью php. Создаём запись в таблице тоже с помощью php.

Отмечен как дубликат участниками A K ♦ , aleksandr barakin, 0xdb, user300000, kot-da-vinci 25 окт ’18 в 17:29 .

Подобный вопрос задавали ранее и на него уже получен ответ. Если представленные ответы не являются исчерпывающими, пожалуйста, задайте новый вопрос.

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.