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

PRIMARY KEY(MySQL)

Estas en el tema de PRIMARY KEY(MySQL) en el foro de Bases de Datos General en Foros del Web. En mi tabla identifico a mi campo id PRIMARY KEY auto_increment. Inserto unos diez datos y mi id queda en 10, hasta ahora todo bien. ...
  #1 (permalink)  
Antiguo 29/12/2003, 17:10
 
Fecha de Ingreso: noviembre-2003
Mensajes: 61
Antigüedad: 21 años
Puntos: 0
PRIMARY KEY(MySQL)

En mi tabla identifico a mi campo id PRIMARY KEY auto_increment. Inserto unos diez datos y mi id queda en 10, hasta ahora todo bien. Necesito ahora borrar todos los registros y comenzar de nuevo, pero al insertar el primero, el id pasa a 11. Mi pregunta es, si vacie la tabla por qué no comienza desde 1 de nuevo? necesito esto para llevar el control de la cantidad de registros existentes. Igual pasa si borro un solo registro. A que se debe esto? existe alguna forma de corregirlo?.
Gracias de antemano.
  #2 (permalink)  
Antiguo 29/12/2003, 19:03
Avatar de Allende  
Fecha de Ingreso: octubre-2003
Ubicación: La Habana
Mensajes: 54
Antigüedad: 21 años, 1 mes
Puntos: 0
Mira, el problema es que access reubica los autonumericos cuando compactas la bd.
Intenta compactar y reparar y veras como se arregla todo

salu2, allende.
  #3 (permalink)  
Antiguo 29/12/2003, 19:09
 
Fecha de Ingreso: noviembre-2003
Mensajes: 61
Antigüedad: 21 años
Puntos: 0
ACCESS?

La base de datos esta en MySQL! no Access. No se si lo que dices se aplique a MySQL.Gracias de todos modos
  #4 (permalink)  
Antiguo 29/12/2003, 23:55
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 23 años
Puntos: 655
Cualquier motor de BD al declarar un campo AUTO_INCREMENT, lleva internamente ese control. Te voy a poner un ejemplo que aparece en la web de MySQL.
Código PHP:
CREATE TABLE animals (
             
id MEDIUMINT NOT NULL AUTO_INCREMENT,
             
name CHAR(30NOT NULL,
             
PRIMARY KEY (id)
             );
INSERT INTO animals (nameVALUES ("dog"),("cat"),("penguin"),
                                  (
"lax"),("whale"),("ostrich");
SELECT FROM animals;

Resultado

+----+---------+
id name    |
+----+---------+
|  
dog     |
|  
cat     |
|  
penguin |
|  
lax     |
|  
whale   |
|  
ostrich |
+----+---------+ 
Si borras el registro 6 y luego agregas otro, te va a quedar así:
Código PHP:
+----+---------+
id name    |
+----+---------+
|  
dog     |
|  
cat     |
|  
penguin |
|  
lax     |
|  
whale   |
|  
monkey |
+----+---------+ 
No va a usar el 6 aunque lo hayas borrado porque el contador interno del motor de BD lleva su cuenta. Sucede lo mismo si borras todos los registros, la cuenta ya fue iniciada y continuará desde el último agregado.

Lo que si podrías hacer es alterar el contador interno para que inicie en otra secuencia. Ejemplo:
Código PHP:
ALTER TABLE tbl_name AUTO_INCREMENT 100 
, con esta sentencia, podes indicar que cambie el contador interno para que su secuencia empiece en 100, 101, 102, etc. 3.6.9 Using AUTO_INCREMENT

Para más referencia, podrías bajarte el manual de MySQL de su web oficial o revisarlo en línea ahi mismo.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #5 (permalink)  
Antiguo 31/12/2003, 14:53
 
Fecha de Ingreso: junio-2001
Mensajes: 23
Antigüedad: 23 años, 4 meses
Puntos: 1
No soy un especialista de MySQL, pero hay un comando que después de realizado un:

SELECT * FROM mitabla

permite saber el número de ROWS (Registros) que ha seleccionado, y al haber elegido todos, pues no tienes que andar mareando con el auto-incrementado.

Un saludo desde mi desconocida sabiduría.

Feliz año a todos que ya quedan 3 horitas y 7 minutos (al menos aquí en la Penínsulo, que los hasta para esto son raros los Canarios :))
__________________
A la mierda los torpedos... ¡Avante toda!
  #6 (permalink)  
Antiguo 30/01/2004, 09:15
Avatar de elbueno45  
Fecha de Ingreso: noviembre-2003
Ubicación: lima
Mensajes: 97
Antigüedad: 21 años
Puntos: 0
Pero por que no simplemente haces un store procedure que cada vez que elimines un dato a la vez haces un alter table para que modifique y crees el autonumerico de nuevo pero que empiece desde el numero que te quedaste - 1.. o mas rapido un trigger

pero no entiendo muy bien, si lo que quieres es tener el numero de registros con un select count(id) from clientes puedes saber la cantidad de registros que tienes.. el autonumerico es mas para codigos primarios.. ya que no se pueden repetir y diferenciarlas de otras

espero haberte ayudado en algo

suerte

elbueno45
__________________
elbueno45
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 14:27.