Функция LAST_INSERT_ID в MySQL: как получить ID после INSERT

После INSERT важно корректно получить AUTO_INCREMENT ID в многопользовательской среде, иначе можно связать не тот запись. Материал объясняет поведение LAST_INSERT_ID(), особенности при транзакциях, примеры в PHP и методы защиты целостности при вставке связанных данных.

Вы разберётесь, как безопасно получить последний вставленный идентификатор в практическом коде. В результате получите рабочую схему с использованием LAST_INSERT_ID() и транзакций, которая предотвращает пересечения ID между пользователями.

Пример MySQL LAST_INSERT_ID

Давайте рассмотрим пример использования функции MySQL LAST_INSERT_ID.

Создадим новую таблицу для тестирования под названием tbl. В таблице tbl установим атрибут AUTO_INCREMENT для столбца id:

CREATE TABLE tbl (
    id INT AUTO_INCREMENT PRIMARY KEY,
    description VARCHAR(250) NOT NULL
);

Затем вставим новую строку в таблицу tbl:

INSERT INTO tbl(description)
VALUES('MySQL last_insert_id');

Воспользуемся функцией MySQL LAST_INSERT_ID для получения идентификатора последней вставленной строки, который был сгенерирован MySQL.

SELECT LAST_INSERT_ID();
Пример MySQL LAST_INSERT_ID

Важно отметить, что если вставить несколько строк в таблицу с помощью одного оператора INSERT, то функция LAST_INSERT_ID вернет идентификатор первой вставленной строки.

Предположим, столбец AUTO_INCREMENT имеет текущее значение 1, и вы вставляете три строки в таблицу. Когда вы примените функцию LAST_INSERT_ID, то получите значение 2 вместо 4.

Следующее выражение вставляет три строки в таблицу tbl и получает идентификатор последней вставки с помощью функции LAST_INSERT_ID.

INSERT INTO tbl(description)
VALUES('record 1'),
      ('record 2'),
      ('record 3');
SELECT LAST_INSERT_ID();

Проверим данные таблицы tbl:

SELECT * FROM tbl;

Функция LAST_INSERT_ID работает независимо от клиента. Это значит, что значение, возвращаемое функцией LAST_INSERT_ID для отдельного клиента, является значением, сгенерированным только этим клиентом. Благодаря этому каждый пользователь получает свой собственный уникальный идентификатор.

В этой статье мы показали, как использовать функцию MySQL LAST_INSERT_ID для получения порядкового номера последней строки, добавленной в таблицу.

МЛ Мария Логутенкоавтор-переводчик статьи «MySQL LAST_INSERT_ID Function»

Комментарии

Оставьте свой комментарий
Пока никто не оставил комментариев