MySQL-PHP –> ID auto_increment no incrementa de a 1

publicado por: Anonymous

Mi aplicación web registra un usuario y lo guarda en la BD pero los id’s van 4-9-18-27-48-57-66-75.
Cómo haga para que el auto incremento sea de a 1? Por qué puede estar pasando esto?

Esta es la función que inserta el nuevo $usuario en la tabla:
*la funcion recibe $_POST como parámetro $usuario.

function guardarUsuarioDB($usuario) {
useDB();
global $db;
$sql = "INSERT INTO users VALUES (default,:name, :email, :password)";
$query = $db->prepare($sql);
$query->bindValue(":name", $usuario["name"]);
$query->bindValue(":email", $usuario["email"]);
$query->bindValue(":password", $usuario["password"]);
$query->execute();
$usuario["id"] = $db->lastInsertId();
return $usuario;
}

solución

En MySQL nada asegura que el id que se genere automáticamente se incremente de 1 en 1 a no ser que tu lo especifiques. Internamente Mysql utiliza secuencias para establecer los IDs. Esto quiere decir que si llegado el momento en la secuencia, por lo que sea existen valores anteriores que han quedado libres es posible que los reutilice en vez de generar un id nuevo.

Por eso uno de los principios en el diseño de bases de datos es que el campo que represente el identificador de una tupla de datos carezca completamente de significado, porque en caso de que no fuerces tu a que se lleve un control sobre el mismo, este valor no tiene por qué ser secuencial.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *