valor una ultimo tabla registro partir obtener numero last automatico auto_increment mysql auto-increment

una - obtener valor auto_increment mysql



Obtenga el valor actual de AUTO_INCREMENT para cualquier tabla (6)

¿Cómo obtengo el valor actual de AUTO_INCREMENT para una tabla en MySQL?


A pesar de que la respuesta de Methai es correcta si ejecuta la consulta manualmente, el problema ocurre cuando 2 transacciones / conexiones simultáneas ejecutan esta consulta en tiempo de ejecución en producción (por ejemplo).

Solo intente manualmente en el banco de trabajo MySQL con 2 conexiones abiertas simultáneamente:

CREATE TABLE translation ( id BIGINT PRIMARY KEY AUTO_INCREMENT ); # Suppose we have already 20 entries, we execute 2 new inserts:

Transacción 1:

21 = SELECT `AUTO_INCREMENT` FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = ''DatabaseName'' AND TABLE_NAME = ''translation''; insert into translation (id) values (21);

Transacción 2:

21 = SELECT `AUTO_INCREMENT` FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = ''DatabaseName'' AND TABLE_NAME = ''translation''; insert into translation (id) values (21); # commit transaction 1; # commit transaction 2;

La inserción de la transacción 1 es correcta: la inserción de la transacción 2 es errónea: Código de error: 1062. Duplique la entrada ''21'' para la clave ''PRIMARIA''.

Una buena solución sería la respuesta de jvdub porque, por transacción / conexión, las 2 inserciones serán:

Transacción 1:

insert into translation (id) values (null); 21 = SELECT LAST_INSERT_ID();

Transacción 2:

insert into translation (id) values (null); 22 = SELECT LAST_INSERT_ID(); # commit transaction 1; # commit transaction 2;

¡Pero tenemos que ejecutar el last_insert_id () justo después de la inserción! ¡Y podemos reutilizar esa identificación para insertarla en otras tablas donde se espera una clave externa!

Además, no podemos ejecutar las 2 consultas de la siguiente manera:

insert into translation (id) values ((SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME=''translation''));

¡porque en realidad estamos interesados ​​en obtener / reutilizar esa ID en otra mesa o regresar!


Creo que estás buscando la función LAST_INSERT_ID() MySQL. Si está en la línea de comando, simplemente ejecute lo siguiente:

LAST_INSERT_ID();

También puede obtener este valor a través de una consulta SELECT:

SELECT LAST_INSERT_ID();


Puede obtener todos los datos de la tabla utilizando esta consulta:

SHOW TABLE STATUS FROM `DatabaseName` WHERE `name` LIKE ''TableName'' ;

Puede obtener exactamente esta información utilizando esta consulta:

SELECT `AUTO_INCREMENT` FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = ''DatabaseName'' AND TABLE_NAME = ''TableName'';


Si la columna se autoincrementa en el servidor sql, para ver el valor actual autoincrementado, y si desea editar ese valor para esa columna, utilice la siguiente consulta.

-- to get current value select ident_current(''Table_Name'') -- to update current value dbcc checkident (''[Table_Name]'',reseed,"Your Value")


Si solo quiere saber el número, en lugar de obtenerlo en una consulta, puede usar:

SHOW CREATE TABLE tablename;

Debería ver el auto_increment en la parte inferior


código de muestra ejecutable mysqli:

<?php $db = new mysqli("localhost", "user", "password", "YourDatabaseName"); if ($db->connect_errno) die ($db->connect_error); $table=$db->prepare("SHOW TABLE STATUS FROM YourDatabaseName"); $table->execute(); $sonuc = $table->get_result(); while ($satir=$sonuc->fetch_assoc()){ if ($satir["Name"]== "YourTableName"){ $ai[$satir["Name"]]=$satir["Auto_increment"]; } } $LastAutoIncrement=$ai["YourTableName"]; echo $LastAutoIncrement; ?>