Sql last insert id

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

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

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

Пример MySQL LAST_INSERT_ID

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

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

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

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


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

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

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


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


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

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

Читайте также:  Почему не устанавливается origin

Данная публикация представляет собой перевод статьи « MySQL LAST_INSERT_ID Function » , подготовленной дружной командой проекта Интернет-технологии.ру

I have a MySQL question that I think must be quite easy. I need to return the LAST INSERTED ID from table1 when I run the following MySql query:

As you can understand the current code will just return the LAST INSERT ID of table2 instead of table1, how can I get the id from table1 even if I insert into table2 between?

10 Answers 10

You could store the last insert id in a variable :

Or get the max id frm table1

Since you actually stored the previous LAST_INSERT_ID() into the second table, you can get it from there:

This enables you to insert a row into 2 different tables and creates a reference to both tables too.

I had the same problem in bash and i’m doing something like this:

which works fine:-) But

don’t work. Because after the first command, the shell will be logged out from mysql and logged in again for the second command, and then the variable @last_insert_id isn’t set anymore. My solution is:

Maybe someone is searching for a solution an bash 🙂

For no InnoDB solution: you can use a procedure don’t forgot to set the the delimiter for storing the procedure with ;

And you can use it.

It would be possible to save the last_id_in_table1 variable into a php variable to use it later?

With this last_id I need to attach some records in another table with this last_id, so I need:

1) Do an INSERT and get the last_id_in_table1

2) For any indeterminated rows in another table, UPDATING these rows with the last_id_insert generated in the insert.

Читайте также:  Шапка для канала fox

Базы данных

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

Описание

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

Синтаксис

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

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

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 :

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock detector