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.