sql >> Database >  >> RDS >> MariaDB

MariaDB LAST_INSERT_ID() uitgelegd

In MariaDB, LAST_INSERT_ID() is een ingebouwde functie die de eerste automatisch gegenereerde waarde retourneert die met succes is ingevoegd voor een AUTO_INCREMENT kolom als resultaat van de meest recent uitgevoerde INSERT verklaring.

Het kan ook worden aangeroepen met een argument, in welk geval het de waarde van de uitdrukking retourneert en de volgende aanroep naar LAST_INSERT_ID() zal dezelfde waarde retourneren.

Syntaxis

De functie kan op de volgende manieren worden aangeroepen:

LAST_INSERT_ID()
LAST_INSERT_ID(expr)

Waar expr wordt geretourneerd, en de volgende aanroep van LAST_INSERT_ID() zal dezelfde waarde retourneren.

Voorbeeld

Laten we als voorbeeld een tabel maken met een AUTO_INCREMENT kolom:

CREATE TABLE guest (
  guest_id INT NOT NULL AUTO_INCREMENT,
  guest_name VARCHAR(255) NOT NULL,
  PRIMARY KEY (guest_id)
);

De guest_id kolom gebruikt AUTO_INCREMENT voor zijn waarde.

Voeg nu enkele rijen in:

INSERT INTO guest (guest_name) VALUES ('Homer');
INSERT INTO guest (guest_name) VALUES ('Bart');
INSERT INTO guest (guest_name) VALUES ('Marge');

Laten we nu LAST_INSERT_ID() . uitvoeren :

SELECT LAST_INSERT_ID();

Resultaat:

+------------------+
| LAST_INSERT_ID() |
+------------------+
|                3 |
+------------------+

Het retourneert 3 .

Laten we nu alle rijen in de tabel retourneren om te controleren of de laatste rij een AUTO_INCREMENT heeft waarde van 3 ingevoegd:

SELECT *
FROM guest;

Resultaat:

+----------+------------+
| guest_id | guest_name |
+----------+------------+
|        1 | Homer      |
|        2 | Bart       |
|        3 | Marge      |
+----------+------------+

De guest_id kolom gaat tot 3 .

Inclusief een argument

Zoals vermeld, retourneert de functie, indien aangeroepen met een argument, de waarde van de uitdrukking en de volgende aanroep naar LAST_INSERT_ID() zal dezelfde waarde retourneren.

SELECT LAST_INSERT_ID(9);

Resultaat:

+-------------------+
| LAST_INSERT_ID(9) |
+-------------------+
|                 9 |
+-------------------+

Noem het nu opnieuw, maar zonder argument:

SELECT LAST_INSERT_ID();

Resultaat:

+------------------+
| LAST_INSERT_ID() |
+------------------+
|                9 |
+------------------+

Het retourneert nog steeds een waarde van 9 .

Als we echter doorgaan met het invoegen van waarden in onze guest tabel, de AUTO_INCREMENT gaat verder waar het gebleven was op die tafel:

INSERT INTO guest (guest_name) VALUES ('Lisa');

Laten we nu LAST_INSERT_ID() . uitvoeren :

SELECT LAST_INSERT_ID();

Resultaat:

+------------------+
| LAST_INSERT_ID() |
+------------------+
|                4 |
+------------------+

Het retourneert 4 .

En zo ziet de tabel er nu uit:

SELECT *
FROM guest;

Resultaat:

+----------+------------+
| guest_id | guest_name |
+----------+------------+
|        1 | Homer      |
|        2 | Bart       |
|        3 | Marge      |
|        4 | Lisa       |
+----------+------------+

Zie de MariaDB-documentatie voor meer informatie over deze functie.


  1. Caching van tijdelijke objecten van SQL Server

  2. Hoe stel ik programmatisch de verbindingsreeks in voor Entity-Framework Code-First?

  3. Activiteit en achtergrondservice Toegang tot SQLite-database

  4. Gebruik van SqlParameter in SQL LIKE-clausule werkt niet