I MariaDB, LAST_INSERT_ID()
er en indbygget funktion, der returnerer den første automatisk genererede værdi, der er blevet indsat for en AUTO_INCREMENT
kolonne som et resultat af den senest udførte INSERT
erklæring.
Det kan også kaldes med et argument, i hvilket tilfælde det returnerer værdien af udtrykket og det næste kald til LAST_INSERT_ID()
vil returnere den samme værdi.
Syntaks
Funktionen kan kaldes på følgende måder:
LAST_INSERT_ID()
LAST_INSERT_ID(expr)
Hvor expr
returneres, og det næste kald til LAST_INSERT_ID()
vil returnere den samme værdi.
Eksempel
Lad os som et eksempel oprette en tabel med en AUTO_INCREMENT
kolonne:
CREATE TABLE guest (
guest_id INT NOT NULL AUTO_INCREMENT,
guest_name VARCHAR(255) NOT NULL,
PRIMARY KEY (guest_id)
);
guest_id
kolonne bruger AUTO_INCREMENT
for dens værdi.
Indsæt nu nogle rækker:
INSERT INTO guest (guest_name) VALUES ('Homer');
INSERT INTO guest (guest_name) VALUES ('Bart');
INSERT INTO guest (guest_name) VALUES ('Marge');
Lad os nu køre LAST_INSERT_ID()
:
SELECT LAST_INSERT_ID();
Resultat:
+------------------+ | LAST_INSERT_ID() | +------------------+ | 3 | +------------------+
Det returnerer 3
.
Lad os nu returnere alle rækker i tabellen for at bekræfte, at den sidste række har en AUTO_INCREMENT
værdi af 3
indsat:
SELECT *
FROM guest;
Resultat:
+----------+------------+ | guest_id | guest_name | +----------+------------+ | 1 | Homer | | 2 | Bart | | 3 | Marge | +----------+------------+
guest_id
kolonne går op til 3
.
Inklusive et argument
Som nævnt, hvis den kaldes med et argument, returnerer funktionen værdien af udtrykket og det næste kald til LAST_INSERT_ID()
vil returnere den samme værdi.
SELECT LAST_INSERT_ID(9);
Resultat:
+-------------------+ | LAST_INSERT_ID(9) | +-------------------+ | 9 | +-------------------+
Kald det nu igen, men uden argumenter:
SELECT LAST_INSERT_ID();
Resultat:
+------------------+ | LAST_INSERT_ID() | +------------------+ | 9 | +------------------+
Det returnerer stadig værdien 9
.
Men hvis vi fortsætter med at indsætte værdier i vores guest
tabellen, AUTO_INCREMENT
vil fortsætte, hvor det slap på bordet:
INSERT INTO guest (guest_name) VALUES ('Lisa');
Lad os nu køre LAST_INSERT_ID()
:
SELECT LAST_INSERT_ID();
Resultat:
+------------------+ | LAST_INSERT_ID() | +------------------+ | 4 | +------------------+
Det returnerer 4
.
Og sådan ser bordet ud nu:
SELECT *
FROM guest;
Resultat:
+----------+------------+ | guest_id | guest_name | +----------+------------+ | 1 | Homer | | 2 | Bart | | 3 | Marge | | 4 | Lisa | +----------+------------+
For mere information om denne funktion, se MariaDB-dokumentationen.