I MariaDB, LAST_INSERT_ID() är en inbyggd funktion som returnerar det första automatiskt genererade värdet som framgångsrikt infogats för en AUTO_INCREMENT kolumnen som ett resultat av den senast körda INSERT uttalande.
Det kan också anropas med ett argument, i vilket fall returnerar det värdet på uttrycket och nästa anrop till LAST_INSERT_ID() returnerar samma värde.
Syntax
Funktionen kan anropas på följande sätt:
LAST_INSERT_ID()
LAST_INSERT_ID(expr)
Där expr returneras och nästa anrop till LAST_INSERT_ID() returnerar samma värde.
Exempel
Som ett exempel, låt oss skapa en tabell med en AUTO_INCREMENT kolumn:
CREATE TABLE guest (
guest_id INT NOT NULL AUTO_INCREMENT,
guest_name VARCHAR(255) NOT NULL,
PRIMARY KEY (guest_id)
);
guest_id kolumnen använder AUTO_INCREMENT för dess värde.
Infoga nu några rader:
INSERT INTO guest (guest_name) VALUES ('Homer');
INSERT INTO guest (guest_name) VALUES ('Bart');
INSERT INTO guest (guest_name) VALUES ('Marge');
Låt oss nu köra LAST_INSERT_ID() :
SELECT LAST_INSERT_ID(); Resultat:
+------------------+ | LAST_INSERT_ID() | +------------------+ | 3 | +------------------+
Den returnerar 3 .
Låt oss nu returnera alla rader i tabellen för att verifiera att den sista raden har en AUTO_INCREMENT värdet 3 infogat:
SELECT *
FROM guest; Resultat:
+----------+------------+ | guest_id | guest_name | +----------+------------+ | 1 | Homer | | 2 | Bart | | 3 | Marge | +----------+------------+
guest_id kolumnen går upp till 3 .
Inklusive ett argument
Som nämnts, om den anropas med ett argument, returnerar funktionen värdet för uttrycket och nästa anrop till LAST_INSERT_ID() returnerar samma värde.
SELECT LAST_INSERT_ID(9); Resultat:
+-------------------+ | LAST_INSERT_ID(9) | +-------------------+ | 9 | +-------------------+
Ring det nu igen, men utan argument:
SELECT LAST_INSERT_ID(); Resultat:
+------------------+ | LAST_INSERT_ID() | +------------------+ | 9 | +------------------+
Det returnerar fortfarande värdet 9 .
Men om vi fortsätter att infoga värden i vår guest tabellen, AUTO_INCREMENT kommer att fortsätta där det slutade på det bordet:
INSERT INTO guest (guest_name) VALUES ('Lisa');
Låt oss nu köra LAST_INSERT_ID() :
SELECT LAST_INSERT_ID(); Resultat:
+------------------+ | LAST_INSERT_ID() | +------------------+ | 4 | +------------------+
Den returnerar 4 .
Och så här ser tabellen ut nu:
SELECT *
FROM guest; Resultat:
+----------+------------+ | guest_id | guest_name | +----------+------------+ | 1 | Homer | | 2 | Bart | | 3 | Marge | | 4 | Lisa | +----------+------------+
För mer information om denna funktion, se MariaDB-dokumentationen.