В этом учебном пособии вы узнаете, как использовать MariaDB функцию LAST_INSERT_ID с синтаксисом и примерами.
Описание
MariaDB функция LAST_INSERT_ID возвращает первое значение AUTO_INCREMENT, которое было установлено самой последней инструкцией INSERT или UPDATE, которая затронула столбец AUTO_INCREMENT.
Синтаксис
Синтаксис функции LAST_INSERT_ID в MariaDB:
Параметры или аргументы
- 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 может использоваться в следующих версиях MariaDB:
- MariaDB 10
Пример
Рассмотрим некоторые примеры функции LAST_INSERT_ID, чтобы понять, как использовать функцию LAST_INSERT_ID в MariaDB.
Например, если бы у нас была следующая таблица sites с полем AUTO_INCREMENT с именем site_id:
1 2 3 4 |
CREATE TABLE sites ( site_id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, site_name VARCHAR(50) NOT NULL, server_name VARCHAR(50) ); |
И таблица sites содержала бы следующие записи:
site_id | site_name | server_name |
---|---|---|
1 | Yahoo.com | MyServer |
И мы выполнили следующий оператор INSERT:
1 2 3 4 |
INSERT INTO sites (site_name, server_name) VALUES ('Google.com', 'YourServer'); |
Таблица sites теперь будет выглядеть так:
site_id | site_name | server_name |
---|---|---|
1 | Yahoo.com | MyServer |
2 | Google.com | YourServer |
И если мы выполним функцию LAST_INSERT_ID следующим образом:
1 2 3 |
SELECT LAST_INSERT_ID(); --Результат: 2 |
Функция LAST_INSERT_ID вернет 2, так как последний оператор INSERT вставил запись в таблицу сайтов со значением site_id (то есть: значение AUTO_INCREMENT), равным 2.
Влияет на более чем одно значение AUTO_INCREMENT
Давайте кратко рассмотрим, как будет вести себя функция LAST_INSERT_ID, если в самом последнем INSERT задано более одного значения AUTO_INCREMENT. Другими словами, что произойдет, если мы вставим 2 записи.
Давайте снова посмотрим на таблицу сайтов с полем AUTO_INCREMENT с именем site_id:
1 2 3 4 |
CREATE TABLE sites ( site_id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, site_name VARCHAR(50) NOT NULL, server_name VARCHAR(50) ); |
И таблица sites содержала бы следующие записи:
site_id | site_name | server_name |
---|---|---|
1 | Yahoo.com | MyServer |
И мы выполнили следующий оператор INSERT, который вставляет более одной записи в таблицу сайтов:
1 2 3 4 5 |
INSERT INTO sites (site_name, server_name) VALUES ('Google.com', 'YourServer'), ('Yandex.com', 'NewServer'); |
После выполнения этого оператора INSERT таблица сайтов теперь будет выглядеть так:
site_id | site_name | server_name |
---|---|---|
1 | Yahoo.com | MyServer |
2 | Google.com | YourServer |
3 | Yandex.com | NewServer |
Как вы можете видеть, оператор INSERT вставил 2 новые записи в таблицу сайтов (site_id = 2 и site_id = 3).
Теперь, когда мы выполняем функцию LAST_INSERT_ID следующим образом:
1 2 3 |
SELECT LAST_INSERT_ID(); --Результат: 5 |
Функция LAST_INSERT_ID вернула бы 5, потому что запись с site_id = 2 была первым значением AUTO_INCREMENT, которое было установлено самой последней инструкцией INSERT.