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.