В MariaDB, LAST_INSERT_ID() е вградена функция, която връща първата автоматично генерирана стойност, успешно вмъкната за AUTO_INCREMENT колона в резултат на най-скоро изпълнения INSERT изявление.
Може също да бъде извикан с аргумент, в който случай връща стойността на израза и следващото извикване на LAST_INSERT_ID() ще върне същата стойност.
Синтаксис
Функцията може да бъде извикана по следните начини:
LAST_INSERT_ID()
LAST_INSERT_ID(expr)
Където expr се връща и следващото извикване на LAST_INSERT_ID() ще върне същата стойност.
Пример
Като пример, нека създадем таблица с AUTO_INCREMENT колона:
CREATE TABLE guest (
guest_id INT NOT NULL AUTO_INCREMENT,
guest_name VARCHAR(255) NOT NULL,
PRIMARY KEY (guest_id)
);
guest_id колоната използва AUTO_INCREMENT за стойността му.
Сега поставете няколко реда:
INSERT INTO guest (guest_name) VALUES ('Homer');
INSERT INTO guest (guest_name) VALUES ('Bart');
INSERT INTO guest (guest_name) VALUES ('Marge');
Сега нека изпълним LAST_INSERT_ID() :
SELECT LAST_INSERT_ID(); Резултат:
+------------------+ | LAST_INSERT_ID() | +------------------+ | 3 | +------------------+
Връща 3 .
Сега нека върнем всички редове в таблицата, за да проверим дали последният ред има AUTO_INCREMENT стойност на 3 вмъкнато:
SELECT *
FROM guest; Резултат:
+----------+------------+ | guest_id | guest_name | +----------+------------+ | 1 | Homer | | 2 | Bart | | 3 | Marge | +----------+------------+
guest_id колона се увеличава до 3 .
Включително аргумент
Както споменахме, ако е извикана с аргумент, функцията връща стойността на израза и следващото извикване на LAST_INSERT_ID() ще върне същата стойност.
SELECT LAST_INSERT_ID(9); Резултат:
+-------------------+ | LAST_INSERT_ID(9) | +-------------------+ | 9 | +-------------------+
Сега го извикайте отново, но без аргумент:
SELECT LAST_INSERT_ID(); Резултат:
+------------------+ | LAST_INSERT_ID() | +------------------+ | 9 | +------------------+
Той все още връща стойност от 9 .
Въпреки това, ако продължим да вмъкваме стойности в нашия guest таблицата, AUTO_INCREMENT ще продължи там, където е спрял на тази маса:
INSERT INTO guest (guest_name) VALUES ('Lisa');
Сега нека изпълним LAST_INSERT_ID() :
SELECT LAST_INSERT_ID(); Резултат:
+------------------+ | LAST_INSERT_ID() | +------------------+ | 4 | +------------------+
Връща 4 .
А ето как изглежда таблицата сега:
SELECT *
FROM guest; Резултат:
+----------+------------+ | guest_id | guest_name | +----------+------------+ | 1 | Homer | | 2 | Bart | | 3 | Marge | | 4 | Lisa | +----------+------------+
За повече информация относно тази функция вижте документацията на MariaDB.