sql >> Database teknologi >  >> RDS >> MariaDB

MariaDB LAST_INSERT_ID() Forklaret

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.


  1. Fatal fejl:Uopfanget fejl:Kald til udefineret funktion mysql_connect()

  2. SSRS 2014 rapport implementeringsproblem

  3. Skriv et tal med to decimaler SQL Server

  4. Grundlæggende om tabeludtryk, del 9 – Visninger, sammenlignet med afledte tabeller og CTE'er