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.