Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problema con auto_increment se resetea a cero

Estas en el tema de Problema con auto_increment se resetea a cero en el foro de Mysql en Foros del Web. Hola Amigos de forosdelweb. Tengo un problema con una tabla tipo innodb en mysql, la estructura es la siguiente: Código: CREATE TABLE tareas( tar_id int ...
  #1 (permalink)  
Antiguo 01/10/2008, 10:49
 
Fecha de Ingreso: agosto-2008
Mensajes: 3
Antigüedad: 15 años, 8 meses
Puntos: 0
Problema con auto_increment se resetea a cero

Hola Amigos de forosdelweb.

Tengo un problema con una tabla tipo innodb en mysql, la estructura es la siguiente:

Código:
CREATE TABLE tareas(                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
            tar_id int unsigned NOT NULL auto_increment,                                                                                                                                                                                                                                                                                                                                                                                                                                                               
	usu_idusuario int unsigned NOT NULL,                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
	tar_fsolventacion date default '0000-00-00 00:00:00',
	tar_comentarios text,
	tar_mail varchar(100) default '',                                                                                                                                                                                                                                                                                                                                                                                                                                                               
            PRIMARY KEY(tar_id)                                                                                                                                                                                                                                                                                                                                                                                                                                      
          ) TYPE=InnoDB DEFAULT CHARSET=latin1;
Resulta que dicha tabla la utilizo para guardar ciertas actividades que debe realizar una persona, conforme se van realizando las actividades la persona debe borrar los registros.

El problema es que por alguna razón cuando se borran todos los registros de la tabla el campo marcado como auto_increment se me resetea a CERO. utilizo la versión 5.0.51a-community-nt de mysql, la verdad no me habia topado con este problema con auto_increment, pero ciertamente no habia tenido la necesidad de borrar todos los registros de una tabla.

La aplicación es un sistema web que desarrollé en PHP, las sentencias SQL que utilizo en PHP para trabajar con la tabla son dos:

al insertar:
INSERT INTO tareas(usu_idusuario, tar_fsolventacion, tar_comentarios, tar_mail) VALUES('$usu_idusuario', '$tar_fsolventacion', '$tar_comentarios', '$tar_mail')


al borrar:
DELETE FROM tareas WHERE tar_id=$id_aborrar


Ayuda porfas!.
  #2 (permalink)  
Antiguo 01/10/2008, 11:10
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Respuesta: Problema con auto_increment se resetea a cero

Hola, una alternativa seria colocar un campo mas en tu tabla que refleje a ese registro como activo o inactivo, de esa manera tambien podrias conservar el historico de las actividades que realizo dicha persona. Entonces para dicho campo le agregas un valor por defecto por ejemplo 1 y cuando deseas eliminarlo, realizas un update sobre ese campo poniendolo a 0, que seria la forma de indicar "eliminado".
Saludos
__________________
->Aprender es un proceso que incluye el error..
  #3 (permalink)  
Antiguo 01/10/2008, 11:44
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problema con auto_increment se resetea a cero

El problema se origina en el motor InnoDB: En este motor el truncado de tablas (habitual en la eliminación completa de registros), resetea a cero (0) el ID, SIEMPRE. Es parte de su funcionamiento.
En principio la cosa tendría como solución tene runa tabla que almacene los ID relacionados con los nombres de las tablas, algo así como un índice de IDs.
De todos modos la cosa tiene otro considerando: Si fvas a utilizar un ID autoincremental, es mejor que lo hagas donde los ID nunca se deban reiniciar... No en una tabla que se borra periódicamente. Para esas tablas es mejor definir un ID basado en fecha y un campo o campos específicos. De esa forma no importará si lo borras, nunca se pisarán la s claves.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:16.