MySQL: función LAST_INSERT_ID

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

MySQL: función LAST_INSERT_ID

Este tutorial de MySQL explica cómo usar MySQL Función LAST_INSERT_ID Con sintaxis y ejemplos.

describir

La función LAST_INSERT_ID de MySQL devuelve el primer valor AUTO_INCREMENT establecido por la declaración INSERT o UPDATE más reciente que afecta una columna AUTO_INCREMENT.

sintaxis

La sintaxis de la función LAST_INSERT_ID en MySQL es:

LAST_INSERT_ID( [expression] )

parámetro o parámetro

La expresión es opcional. Si se especifica una expresión, LAST_INSERT_ID devuelve el valor y se recuerda como el siguiente valor devuelto por la función LAST_INSERT_ID.

notas

  • Si la declaración INSERT o UPDATE más reciente estableció más de un valor AUTO_INCREMENT, la función LAST_INSERT_ID devuelve solo el primer valor AUTO_INCREMENT.
  • La función LAST_INSERT_ID devuelve el último valor de AUTO_INCREMENT por cliente, por lo que solo devolverá el último valor de AUTO_INCREMENT para su cliente. Este valor no se ve afectado por otros clientes.
  • Ejecutar la función LAST_INSERT_ID no afecta el valor devuelto por LAST_INSERT_ID.

aplicar para

La función LAST_INSERT_ID está disponible para las siguientes versiones de MySQL:

  • MySQL 5.7, MySQL 5.6, MySQL 5.5, MySQL 5.1, MySQL 5.0, MySQL 4.1, MySQL 4.0, MySQL 3.23

ejemplo

Veamos algunos ejemplos de la función LAST_INSERT_ID de MySQL y exploremos cómo usar la función LAST_INSERT_ID en MySQL.

Por ejemplo, si tenemos la siguiente tabla de proveedores con un campo AUTO_INCREMENT llamado id_proveedor:

CREATE TABLE suppliers 
( supplier_id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
  supplier_name VARCHAR(50) NOT NULL,
  website VARCHAR(50) );

La tabla de proveedores contiene los siguientes registros:

Identificación del proveedor Nombre del proveedor sitio web
1 tecnología de redes www.prograrmaplus.com
2 Revisa tus matemáticas www.checkyourmath.com
3 Gran evento www.grandesactividades.com

Ejecutamos la siguiente instrucción INSERT:

INSERT INTO suppliers
(supplier_name, website)
VALUES
('Oracle', 'www.oracle.com');

La tabla de proveedores ahora se ve así:

Identificación del proveedor Nombre del proveedor sitio web
1 tecnología de redes www.prograrmaplus.com
2 Revisa tus matemáticas www.checkyourmath.com
3 Gran evento www.grandesactividades.com
4 Oráculo www.oracle.com

Si ejecutamos la función LAST_INSERT_ID de la siguiente manera:

mysql> SELECT LAST_INSERT_ID();
Result: 4

La función LAST_INSERT_ID devolverá 4 porque la última declaración INSERT insertó un registro en la tabla de proveedores con una ID de proveedor (es decir: valor AUTO_INCREMENT) de 4.

Afecta a múltiples valores AUTO_INCREMENT

Echemos un vistazo rápido a cómo se comportaría la función LAST_INSERT_ID si el INSERT más reciente tuviera varios valores AUTO_INCREMENT establecidos. En otras palabras, qué sucede si insertamos 2 registros en la última instrucción INSERT.

Veamos nuevamente la tabla de proveedores con un campo AUTO_INCREMENT llamado id_proveedor:

CREATE TABLE suppliers 
( supplier_id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
  supplier_name VARCHAR(50) NOT NULL );

La tabla de proveedores contiene los siguientes registros:

Identificación del proveedor Nombre del proveedor sitio web
1 tecnología de redes www.prograrmaplus.com
2 Revisa tus matemáticas www.checkyourmath.com
3 Gran evento www.grandesactividades.com
4 Oráculo www.oracle.com

También tenemos una tabla de clientes con los siguientes registros:

Identificación del cliente Nombre del cliente
1 valor de vida
2 Samsung

Ejecutamos la siguiente instrucción INSERT, que utiliza una instrucción SELECT para insertar varios registros en la tabla de proveedores:

INSERT INTO suppliers
(supplier_name)
SELECT customer_name
FROM customers
ORDER BY customer_id;

Después de ejecutar esta declaración INSERT, la tabla de proveedores ahora se ve así:

Identificación del proveedor Nombre del proveedor sitio web
1 tecnología de redes www.prograrmaplus.com
2 Revisa tus matemáticas www.checkyourmath.com
3 Gran evento www.grandesactividades.com
4 Oráculo www.oracle.com
5 valor de vida nulo
6 Samsung nulo

Como puede ver, la sentencia INSERT inserta 2 nuevos registros en la tabla de proveedores (id_proveedor=5 y id_proveedor=6).

Ahora cuando ejecutamos la función LAST_INSERT_ID de la siguiente manera:

mysql> SELECT LAST_INSERT_ID();
Result: 5

La función LAST_INSERT_ID devolverá 5 porque el registro con supplier_id=5 es el primer valor AUTO_INCREMENT establecido por la instrucción INSERT más reciente.