[ACCEDER] restablecer el ID de autoincremento

Resuelto
xdiz Mensajes publicados 109 Fecha de registro   Estado Miembro Última intervención   -  
 Dodino -
Bonsoir,

Después de haber realizado pruebas en mi tabla, deseando que mi ID se restablezca a cero para hacer que una tabla sea "saludable", hice un DELETE * FROM maTable y también intenté TRUNCATE TABLE maTable, pero la función TRUNCATE no funciona en ACCESS.

¿Cómo puedo restablecer un ID de auto incremento a cero después de haber eliminado TODAS las tuplas de la tabla?
Configuración: Windows XP Firefox 3.0.1

11 respuestas

  1. FabDev92
     
    Hola,
    tengo una solución que no es mediante una consulta SQL, sino una funcionalidad de ACCESS:
    Cuando la tabla ha sido vaciada de sus tuplas, en el menú "Herramientas", se puede utilizar "Utilidades de bases de datos" -> "Compactar una base de datos"
    => Esto restablece a 0 el contador de los campos de autoincremento.

    ATENCIÓN: esto puede ser peligroso si la tabla aún contiene tuplas, ya que el campo de autoincremento vuelve a comenzar en 0 y podría, en algún momento, coincidir con un valor que ya ha sido usado, lo que generaría un problema si este mismo campo forma parte de la clave primaria.
    23
    1. Dodino
       
      gracias hermano
      0
  2. Jean_Jacques Mensajes publicados 1045 Fecha de registro   Estado Miembro Última intervención   112
     
    Hola,

    Solo conozco un método para obtener el resultado deseado.
    - Seleccionar la tabla correspondiente
    - ctrl+C y luego ctrl+V
    - Asignar un nombre arbitrario
    - Elegir la opción solo estructura

    Basta con sustituir la antigua por la nueva tabla así creada

    Es de gran ayuda

    Buen día
    La ciencia solo encuentra lo que siempre ha existido.
    REEVES Hubert.
    3
  3. Christian
     
    Hola
    Es muy simple. Muestras tu tabla en modo creación, eliminas el campo que contiene el número automático y lo vuelves a crear con el mismo nombre. Comenzarás de cero. Por seguridad, antes de hacer esta manipulación, haz una copia de seguridad.
    Christian
    2
    1. Lys
       
      No funciona :-(
      0
  4. almux Mensajes publicados 22 Estado Miembro 2
     
    Hola,

    He intentado la operación... Ahora debería poner un campo auto-incremental en la primera posición de la tabla... Pero no puedo hacerlo.
    Se niega a poner el auto-incremento:
    Error
    consulta SQL:

    ALTER TABLE `contactlivre_1` CHANGE `ref_com` `ref_com` VARCHAR( 8 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL AUTO_INCREMENT

    MySQL respondió:

    #1063 - Especificador de columna incorrecto para la columna 'ref_com'

    ¿Qué hay que hacer?

    ¡AYUDA!!!!! Aaaaaaaargl!

    RESOLUT: ¡No SE DEBE PONER VARCHAR... sino INT!!!!!!
    ¡Uff!

    ;)
    1
  5. xdiz Mensajes publicados 109 Fecha de registro   Estado Miembro Última intervención   41
     
    Hola,

    Si realmente es la única, entonces haré lo que dices ;)

    Gracias. ¡Hasta luego!
    0
  6. Jean_Jacques Mensajes publicados 1045 Fecha de registro   Estado Miembro Última intervención   112
     
    Xdiz,

    Me sorprende que ningún otro colaborador haya propuesto algo mejor ...
    Un método más ... digamos "cuadrado" me habría gustado.
    Mientras no haya algo mejor, mi solución deberá ser considerada como la mejor.

    De hecho, estoy algo decepcionado. A seguir ...

    De todos modos, gracias por la retroalimentación

    ¡Hasta luego!
    La ciencia solo encuentra lo que siempre ha existido.
    REEVES Hubert.
    0
  7. xdiz Mensajes publicados 109 Fecha de registro   Estado Miembro Última intervención   41
     
    Yo también habría querido que fuera mejor sin querer ofenderte... porque tu método es un poco improvisado ;)

    Esperemos un poco a que un profesional de ACCESS llegue al tema :)
    0
    1. mike
       
      Désolé, je ne peux pas accéder aux contenus des liens. Si vous avez besoin d'une traduction ou d'un résumé d'un texte particulier, veuillez le fournir ici.
      0
  8. xdiz Mensajes publicados 109 Fecha de registro   Estado Miembro Última intervención   41
     
    Hola Fab, yo también lo hice, pero no existen soluciones en lenguaje SQL para resolver este problema en Access.
    Al final solo podemos compactar o copiar/pegar la estructura de las tablas.
    Gracias de todos modos ;)
    0
    1. jouan_a
       
      Yop,
      Bueno, tal vez tenga algo más simple
      para poner tu auto-incremento a cero en SQL
      haces:

      INSERT INTO tu_tabla (columna1, columna2, ..., auto-incr) VALUES (valor1, valor2, ..., 0)

      tal vez debas poner varios valores si tienes campos obligatorios
      auto-incr es el campo de auto-incremento que tienes, pones 0
      después haces

      DELETE FROM tu_tabla WHERE auto-incr = 0

      y así tu primer registro será 1.
      0
  9. michel_m Mensajes publicados 18903 Fecha de registro   Estado Colaborador Última intervención   3 320
     
    Hola,

    Para compactar la base, es necesario marcar la biblioteca JRO en VBE, herramientas - referencia - Microsoft Jet and Replication Object .x library

    Sub raz_autoincrement()
    Dim je as new JRO.jetengine
    Je.compactdatabase "Ruta y nombre de la base a limpiar", datasource "ruta y nombre de una base temporal"
    kill "Ruta y nombre de la base a limpiar"
    Name "ruta y nombre de una base temporal" as "Ruta y nombre de la base a limpiar"
    end sub

    ¿en "claro"?
    compactamos la base bajo un nombre temporal
    borramos la base original
    renombramos la base temporal al nombre de la base original

    ¿Necesito señalar que es más que prudente hacer una copia de la base antes de cualquier cosa y practicar primero con bases de datos de juguete?
    esta procedimiento consume mucha adrenalina en el programador...

    Como si la método manual descrita por Fab es la + sensata especialmente cuando se trata, como aquí, de limpiar después de una prueba (por lo tanto procedimiento único)

    --
    Cordialmente,
    Michel
    0
  10. Usuario anónimo
     
    ¡Hola!

    Para restablecer el ID de tu tabla, solo tienes que vaciarla después de haber guardado el contenido ^^
    phpMyAdmin registrará el ID más grande existente y lo usará para las próximas inserciones.

    Eso es todo,
    Maxence

    --
    Cuando crecemos, aprendemos cosas que queríamos oír de pequeños.
    0
    1. almux
       
      Gracias Maxence,

      Efectivamente, la reconfiguración funciona perfectamente.
      En primer lugar, había borrado el campo. Pero al recrearlo cometí dos errores:
      1) Olvidé desmarcar "colocar después del primer campo" (!)
      2) No puse el valor correcto (int) (!!)

      Desde entonces, no hay más problemas. ;)

      Almux
      0
  11. Usuario anónimo
     
    Bueno, contento por ti de que vuelva a funcionar ^^

    No dudes en visitar mi sitio de tutoriales, seguro que te interesará ^^
    http://www.maxmicro.fr/

    Maxence

    --
    Cuando crecemos, aprendemos cosas que queríamos oír de pequeños.
    0