Nueva pregunta

Pregunta:

Fecha: 08-04-2018 19:01:23 (En Español)

¿Cómo inicializar a "1" un campo autoincrementable?[Resuelta]

Estoy haciendo un formulario que me manda datos a una DB en MySQL, funciona bien. Le he ingresado varios registros (de prueba) elimino todos los registros y cuando quiero empezar a ingresar nuevos registros la DB sigue con el correlativo del ultimo registro no empieza desde "1".

¿Alguien podría ayudarme diciendome como se "reinicia" un campo con la propiedad autoincremento?

Gracias!!!
Etiquetas: Base de Datos - MySQL - MySQL Desarrollo - Pregunta Votos: 1 - Respuestas: 13 - Vistas: 16 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 08-04-2018 19:19:28 Tiene que colocar el valor primary selecionarlo que sea auto incrementable y que sea de tipo "INT" con valor 1.

    Espero que te pueda servir y tambien espero que estés utilizando phpmyadmin
      Votos: 2 - Link respuesta
     
  • Fecha: 08-04-2018 21:56:02 Amigo en la base de datos los campos autoincrementales solo los puedes reinicias desde phpMyAdmin, del resto esta claro que deben continuar la numeración, pues al ser un campo autoincremental, es clave primaria y por ende no permite valores repetidos, asi que si ya paso el número 1, y lo eliminas, simplemente no vuelve más.

    Tienes que tener en claro lo que quieres hacer, las claves primarias o IDs de linea no puede repetirse, eso crearía un descontrol en tu sistema en dado caso que este asociadas con otras tablas a través de esta clave.

    Te recomiendo que busques tutoriales de normalización de tablas para que te des una idea de lo que hablo, en relación a tu consulta, ve a phpMyAdmin, luego a tu tabla y allí ve a la pestaña operaciones, dependiendo de tu versión te dará la opción de re-inicializar el contado indicando el valor desde donde deseas iniciar de nuevo la tabla.

    Ojo esto lo sugiero solo en modo dev mientra se programas funciones, ya en producción no lo podrás hacer sin dañar tu sistema.
      Votos: 3 - Link respuesta
     
  • Fecha: 09-04-2018 05:48:46 Si es es mi querido amigo carlos, después que rebasa un valor, ya no vuelve nuca jamas a ese valor.
    A menos que destruyas ese tabla y vuelvas a crearla. pero como quiera no es la mejor opcion ya que las practica es lo que hace a tu proyecto

    Saludos de ante mano
      Votos: 1 - Link respuesta
     
  • Fecha: 09-04-2018 08:06:37 Luis Murga,
    Lo que quieres hacer es muy sencillo.
    Me imagino que lo que estás haciendo es un DELETE * FROM [TABLA] para borrar los registros de prueba pero al final tendrías que reiniciar el campo autoincremental con otra consulta como:

    ALTER TABLE [TABLA] AUTO_INCREMENT = 1

    Pero es más sencillo si en lugar de DELETE utilizas un TRUNCATE:

    TRUNCATE TABLE [TABLA]

    Esa sentencia borra todos los registros de la tabla y reinicia el contador de tu campo auto_increment al valor inicial.

    Espero que te sirva.

    Saludos
      Votos: 5 - Link respuesta
     
  • Fecha: 10-04-2018 11:35:46 Creo recordar que en MySQL se permite modificar el contador en las tablas MyISAM, pero no en las InnoDB.

    Así que debes borrarlas, algo que no supone nada en desarrollo (dando por hecho que tienes copia de su estructura), pero que está prohibido en producción, como te han dicho.

    No obstante una buena práctica es no borrar nunca las filas, y menos que un usuario lo pueda hacer, y acostumbrarse a usar campos que indiquen su estado. Por ejemplo para un usuario establecer -1(baja), 0(pendiente) o 1(activo). En su caso y para cumplir con la ley borras sus datos personales, pero no su id, manteniendo así las posibles referencias con otras tablas.

    Espero te sirva.
      Votos: 1 - Link respuesta
     
  • Fecha: 10-04-2018 12:29:52 Si que se puede, para realizar este cambio, puede hacerlos desde Operaciones -> Opciones de Tabla en phpMyAdmin, desde alli, no solo reiniciar el contador, si no que también puede cambiar de InnoDB a MyISAM por ejemplo, cambiarle el nombre a la tabla, entre otras cosas   Votos: 3 - Link respuesta
     
  • Fecha: 10-04-2018 14:24:38 Hola Carlos,

    Estoy probando en una tabla InnoDB y PhpMyAdmin no me acepta reiniciar el auto_increment a 1 después de haber borrado todos los registros.

    En general parece que permite aumentar el valor, no disminuirlo.

    En cambio si antes modifico la tabla a MyISAM sí me lo permite.

    Hablando de modificar directamente el valor de auto_increment, porque si se hace truncate sí lo inicializa a 1.
      Votos: 1 - Link respuesta
     
  • Fecha: 10-04-2018 18:08:47 Ok va a depender de tu versión de mysql y sobre todo de tu version de phpMyAdmin, estoy trabajando con la version 4.7.7 de phpMyAdmin y lo hace sin problemas, tanto en modo local como en mi server, puedes ver un capture de lo que hablo:



    Aquí puedes ver la tabla con sus registros iniciales:



    Luego de eliminar los datos y reiniciar el contador cen operaciones, inserto nuevos registros pero iniciando el autoincrement en 1

      Votos: 2 - Link respuesta
     
  • Fecha: 10-04-2018 18:39:03 Hola a todos por su ayuda. Les comento que ya solucioné mi duda y al parecer es mas fácil de lo que parece.
    1. Eliminar todos los registros de la tabla.
    2. Luego cambiar el tipo de campo de AUTOINCREMENT a INT
    3. Grabar los cambios
    4. Volver a cambiar de INT a AUTOINCREMENT
    5. Grabar los cambios

    Y listo el campo autonumérico se reinicia y vuelve a empezar desde 1.
      Votos: 0 - Link respuesta
     
  • Fecha: 10-04-2018 19:19:20 No se necesita PHPMyAdmin para esto, es una sentencia de MySQL|MariaDB.

    Cuando utilizas ALTER TABLE mi_tabla AUTO_INCREMENT = 1; hay unas cosas que hay que recordar:
    1. El valor NO se puede cambiar a un valor menor o igual al que ya se ha utilizado.
    2. Para tablas MyISAM, si el valor dado es menor o igual al actual entonces se asigna el valor actual de la secuencia + 1.
    3. Para tablas InnoDB, si el valor es menor al actual entonces no pasa nada y se mantiene el valor actual de la secuencia.

    En el caso que no te afecte perder datos entonces puedes utilizar TRUNCATE TABLE mi_tabla;
    Esto eliminará todos los datos de la tabla y reiniciará la secuencia al valor original
      Votos: 1 - Link respuesta
     
  • Fecha: 10-04-2018 22:46:44 Hola Carlos, ok, quizás sea por mi versión de PHPMyAdmin en local. Estoy pensando que quizás se trata de un bug, pues permite modificar el valor, pero no lo guarda. Lo que a mí me sonaba, y que confirmé, es que no me dejaba hacerlo con tablas InnoDB.   Votos: 0 - Link respuesta
     
  • Fecha: 10-04-2018 22:50:06 Hola Luís, pues hazlo con TRUNCATE que es más sencillo. La opción la tienes en Operaciones > Borrar datos > Vaciar la tabla (truncate).   Votos: 1 - Link respuesta
     
  •  
      0  
     
    Fecha: 02-07-2018 12:01:26 <?php
    $host = "localhost";
    $user = "root";
    $pas = "";
    $db = "DataBase";
    $connexion = mysqli_connect($host,$user,$pas,$db);

    // Procedure
    $sql = mysqli_query($con,"SELECT * FROM TableName");
    $NewNumber=1;
    while($row=mysqli_fetch_array($sql)){
    $CurrentNumber = $row['FieldAutoIncrement'];
    mysqli_query($connexion,"UPDATE `TableName` SET `FieldAutoIncrement` = $NewNumber WHERE `TableName`.`FieldAutoIncrement` = $CurrentNumber");

    // Optional to see the changes
    echo $row['FieldAutoIncrement']." -X- ".$NewNumber."<br>";
    $NewNumber++;
    }
    ?>
      Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com