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;
?>