MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

MariaDB LAST_INSERT_ID() expliqué

Dans MariaDB, LAST_INSERT_ID() est une fonction intégrée qui renvoie la première valeur générée automatiquement insérée avec succès pour un AUTO_INCREMENT colonne à la suite du dernier INSERT exécuté déclaration.

Il peut également être appelé avec un argument, auquel cas il renvoie la valeur de l'expression et le prochain appel à LAST_INSERT_ID() renverra la même valeur.

Syntaxe

La fonction peut être appelée des manières suivantes :

LAST_INSERT_ID()
LAST_INSERT_ID(expr)

expr est renvoyé, et le prochain appel à LAST_INSERT_ID() renverra la même valeur.

Exemple

Par exemple, créons une table avec un AUTO_INCREMENT colonne :

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

Le guest_id la colonne utilise AUTO_INCREMENT pour sa valeur.

Insérez maintenant quelques lignes :

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

Exécutons maintenant LAST_INSERT_ID() :

SELECT LAST_INSERT_ID();

Résultat :

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

Il renvoie 3 .

Maintenant, renvoyons toutes les lignes du tableau pour vérifier que la dernière ligne a un AUTO_INCREMENT valeur de 3 inséré :

SELECT *
FROM guest;

Résultat :

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

Le guest_id la colonne monte jusqu'à 3 .

Inclure un argument

Comme mentionné, si elle est appelée avec un argument, la fonction renvoie la valeur de l'expression et le prochain appel à LAST_INSERT_ID() renverra la même valeur.

SELECT LAST_INSERT_ID(9);

Résultat :

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

Maintenant rappelez-le, mais sans argument :

SELECT LAST_INSERT_ID();

Résultat :

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

Il renvoie toujours une valeur de 9 .

Cependant, si nous continuons à insérer des valeurs dans notre guest table, le AUTO_INCREMENT continuera là où il s'est arrêté sur cette table :

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

Exécutons maintenant LAST_INSERT_ID() :

SELECT LAST_INSERT_ID();

Résultat :

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

Il renvoie 4 .

Et voici à quoi ressemble le tableau maintenant :

SELECT *
FROM guest;

Résultat :

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

Pour plus d'informations sur cette fonction, consultez la documentation de MariaDB.