В 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.