[ACCEDER] restablecer el ID de autoincremento
Resuelto
xdiz
Mensajes publicados
109
Fecha de registro
Estado
Miembro
Última intervención
-
Dodino -
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?
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
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.
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.
Dodino
gracias hermano
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.
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.
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!
;)
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!
;)
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.
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.
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 ;)
Al final solo podemos compactar o copiar/pegar la estructura de las tablas.
Gracias de todos modos ;)
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.
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.
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
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
¡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.
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.