MySQL функция LAST_INSERT_ID

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

Описание

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

Синтаксис

Синтаксис MySQL функции LAST_INSERT_ID:

LAST_INSERT_ID( [expression] )

Параметры или аргументы

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

Примечание

  • Если в последнем операторе INSERT или UPDATE задано более одного значения AUTO_INCREMENT, функция LAST_INSERT_ID возвращает только первое значение AUTO_INCREMENT.
  • Функция LAST_INSERT_ID возвращает последнее значение AUTO_INCREMENT для каждого клиента, поэтому оно возвращает только последнее значение AUTO_INCREMENT для вашего клиента. Это значение не может быть затронуто другими клиентами.
  • Выполнение функции LAST_INSERT_ID не влияет на значение, возвращаемое LAST_INSERT_ID.

Применение

Функция LAST_INSERT_ID может использоваться в следующих версиях MySQL:

  • MySQL 5.7, MySQL 5.6, MySQL 5.5, MySQL 5.1, MySQL 5.0, MySQL 4.1, MySQL 4.0, MySQL 3.23

Пример

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

Например, если бы у нас была следующая таблица suppliers с AUTO_INCREMENT полем supplier_id:

И таблица suppliers содержала следующие записи:

supplier_id supplier_name website
1 google_user google.com
2 yandex_user yandex.ru
3 mail_user mail.ru

И мы выполнили следующий оператор INSERT:

Таблица suppliers теперь выглядит так:

supplier_id supplier_name website
1 google_user google.com
2 yandex_user yandex.ru
3 mail_user mail.ru
4 Oracle_user oracle.com

И если мы выполним функцию LAST_INSERT_ID следующим образом:

Функция LAST_INSERT_ID вернет 4, поскольку последний оператор INSERT вставил запись в таблицу suppliers с supplier_id (то есть: значение AUTO_INCREMENT), равным 4.

Воздействие на несколько значений AUTO_INCREMENT

Рассмотрим, как будет вести себя функция LAST_INSERT_ID, если последний INSERT установит более одного значения AUTO_INCREMENT. Другими словами, что произойдет, если мы вставим 2 записи нашим последним оператором INSERT.

Давайте еще раз посмотрим на таблицу suppliers с AUTO_INCREMENT полем supplier_id:

И таблица suppliers содержит следующие записи:

supplier_id supplier_name website
1 google_user google.com
2 yandex_user yandex.ru
3 mail_user mail.ru
4 Oracle_user oracle.com

У нас также есть таблица customers со следующими записями:

customer_id customer_name
1 HP
2 Samsung

И мы выполним следующий оператор INSERT, который использует предложение SELECT для вставки более чем одной записи в таблицу suppliers:

После выполнения оператора INSERT таблица suppliers теперь будет выглядеть так:

supplier_id supplier_name website
1 google_user google.com
2 yandex_user yandex.ru
3 mail_user mail.ru
4 Oracle_user oracle.com
5 HP null
6 Samsung null

Как вы можете видеть, оператор INSERT вставил 2 новых записи в таблицу suppliers (supplier_id = 5 и supplier_id = 6).

Теперь, когда мы выполняем функцию LAST_INSERT_ID следующим образом:

Функция LAST_INSERT_ID вернет 5, потому что запись с supplier_id = 5 была первым значением AUTO_INCREMENT, которое будет установлено самым последним оператором INSERT.