Функция MySQL LAST_INSERT_ID

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

Это значит, что при вставке в таблицу новой строки, которая имеет столбец AUTO_INCREMENT, MySQL автоматически генерирует уникальное целое число и использует его для этого столбца.

Вы можете получить сгенерированный порядковый номер с помощью функции MySQL INSERT_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();
Пример MySQL LAST_INSERT_ID - 2

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

SELECT * FROM tbl;

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

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