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.