V MariaDB, LAST_INSERT_ID()
je vestavěná funkce, která vrací první automaticky vygenerovanou hodnotu úspěšně vloženou pro AUTO_INCREMENT
jako výsledek naposledy provedeného INSERT
prohlášení.
Může být také volán s argumentem, v takovém případě vrátí hodnotu výrazu a další volání LAST_INSERT_ID()
vrátí stejnou hodnotu.
Syntaxe
Funkci lze volat následujícími způsoby:
LAST_INSERT_ID()
LAST_INSERT_ID(expr)
Kde expr
je vráceno a další volání LAST_INSERT_ID()
vrátí stejnou hodnotu.
Příklad
Jako příklad vytvoříme tabulku s AUTO_INCREMENT
sloupec:
CREATE TABLE guest (
guest_id INT NOT NULL AUTO_INCREMENT,
guest_name VARCHAR(255) NOT NULL,
PRIMARY KEY (guest_id)
);
guest_id
sloupec používá AUTO_INCREMENT
pro jeho hodnotu.
Nyní vložte několik řádků:
INSERT INTO guest (guest_name) VALUES ('Homer');
INSERT INTO guest (guest_name) VALUES ('Bart');
INSERT INTO guest (guest_name) VALUES ('Marge');
Nyní spustíme LAST_INSERT_ID()
:
SELECT LAST_INSERT_ID();
Výsledek:
+------------------+ | LAST_INSERT_ID() | +------------------+ | 3 | +------------------+
Vrací 3
.
Nyní vraťme všechny řádky v tabulce, abychom ověřili, že poslední řádek obsahuje AUTO_INCREMENT
hodnotu 3
vloženo:
SELECT *
FROM guest;
Výsledek:
+----------+------------+ | guest_id | guest_name | +----------+------------+ | 1 | Homer | | 2 | Bart | | 3 | Marge | +----------+------------+
guest_id
sloupec jde nahoru na 3
.
Včetně argumentu
Jak bylo zmíněno, pokud je funkce volána s argumentem, vrátí hodnotu výrazu a další volání LAST_INSERT_ID()
vrátí stejnou hodnotu.
SELECT LAST_INSERT_ID(9);
Výsledek:
+-------------------+ | LAST_INSERT_ID(9) | +-------------------+ | 9 | +-------------------+
Nyní to zavolejte znovu, ale bez argumentů:
SELECT LAST_INSERT_ID();
Výsledek:
+------------------+ | LAST_INSERT_ID() | +------------------+ | 9 | +------------------+
Stále vrací hodnotu 9
.
Pokud však budeme pokračovat ve vkládání hodnot do našeho guest
tabulka AUTO_INCREMENT
bude pokračovat tam, kde na tomto stole skončil:
INSERT INTO guest (guest_name) VALUES ('Lisa');
Nyní spustíme LAST_INSERT_ID()
:
SELECT LAST_INSERT_ID();
Výsledek:
+------------------+ | LAST_INSERT_ID() | +------------------+ | 4 | +------------------+
Vrací 4
.
A takto vypadá tabulka nyní:
SELECT *
FROM guest;
Výsledek:
+----------+------------+ | guest_id | guest_name | +----------+------------+ | 1 | Homer | | 2 | Bart | | 3 | Marge | | 4 | Lisa | +----------+------------+
Další informace o této funkci najdete v dokumentaci MariaDB.