sql >> Base de Datos >  >> RDS >> MariaDB

MariaDB LAST_INSERT_ID() explicado

En MariaDB, LAST_INSERT_ID() es una función integrada que devuelve el primer valor generado automáticamente insertado con éxito para un AUTO_INCREMENT columna como resultado del último INSERT ejecutado declaración.

También se puede llamar con un argumento, en cuyo caso, devuelve el valor de la expresión y la siguiente llamada a LAST_INSERT_ID() devolverá el mismo valor.

Sintaxis

La función se puede llamar de las siguientes maneras:

LAST_INSERT_ID()
LAST_INSERT_ID(expr)

Donde expr se devuelve, y la próxima llamada a LAST_INSERT_ID() devolverá el mismo valor.

Ejemplo

Como ejemplo, creemos una tabla con un AUTO_INCREMENT columna:

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

El guest_id la columna usa AUTO_INCREMENT por su valor.

Ahora inserte algunas filas:

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

Ahora ejecutemos LAST_INSERT_ID() :

SELECT LAST_INSERT_ID();

Resultado:

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

Devuelve 3 .

Ahora, devolvamos todas las filas de la tabla para verificar que la última fila tiene un AUTO_INCREMENT valor de 3 insertado:

SELECT *
FROM guest;

Resultado:

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

El guest_id la columna sube a 3 .

Incluir un argumento

Como se mencionó, si se llama con un argumento, la función devuelve el valor de la expresión y la próxima llamada a LAST_INSERT_ID() devolverá el mismo valor.

SELECT LAST_INSERT_ID(9);

Resultado:

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

Ahora llámalo de nuevo, pero sin argumentos:

SELECT LAST_INSERT_ID();

Resultado:

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

Todavía devuelve un valor de 9 .

Sin embargo, si continuamos insertando valores en nuestro guest tabla, el AUTO_INCREMENT continuará donde lo dejó en esa tabla:

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

Ahora ejecutemos LAST_INSERT_ID() :

SELECT LAST_INSERT_ID();

Resultado:

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

Devuelve 4 .

Y así es como se ve la tabla ahora:

SELECT *
FROM guest;

Resultado:

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

Para obtener más información sobre esta función, consulte la documentación de MariaDB.