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

Seguir el Auto Increment MySQL

Estas en el tema de Seguir el Auto Increment MySQL en el foro de Mysql en Foros del Web. Hola, ¿que tal? Estoy teniendo una duda. Yo trabajo en un medio online, un diario de noticias por Internet (bastante importante en mi ciudad) y ...
  #1 (permalink)  
Antiguo 07/08/2012, 02:48
 
Fecha de Ingreso: octubre-2010
Ubicación: Mountain View, United States.
Mensajes: 87
Antigüedad: 14 años
Puntos: 1
Seguir el Auto Increment MySQL

Hola, ¿que tal?

Estoy teniendo una duda.
Yo trabajo en un medio online, un diario de noticias por Internet (bastante importante en mi ciudad) y estamos haciendo una reprogramacion desde 0.
Por tener que hacerlo desde 0, tuve que crear una nueva base de datos, lo cual
lleva a crear nuevas tablas y nueva información, pero el problema es el siguiente.
Hay noticias cargadas en esa base de datos las cuales tienen un ID AI (Auto increment) el cual se usa para visualizar la noticia y para otras cosas mas.

La cosa es que estamos en un ID mas o menos de 153.930 (es el mas reciente) y cuando todo este terminado, migrare los datos de la tabla vieja a la nueva, pero mi duda es, si la tabla nueva tiene un id de 144 y la vieja de 153.930, cuando migre e inserte un nuevo id, ¿con que numero se creara? 145 o 153.931?
Cabe destacar, que muchas filas se perdieron debido a una mala migración anterior (no estuve trabajando en esa empresa en ese tiempo). O sea que el ID 144 en la tabla vieja NO EXISTE, por ende tampoco existe el 145.


Se puede modificar la tabla nueva para que comienze con el ID 153.931?

Espero puedan ayudarme.
  #2 (permalink)  
Antiguo 07/08/2012, 08:32
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: Seguir el Auto Increment MySQL

Hola vBArgentina:

Por defecto, cuando creas un campo autoincremental en una tabla, este comienza a contar desde 1, pero tu podrías alterar este valor en cualquier momento. hay varias formas para hacerlo, checa este script. Supongamos que creamos una tabla con un campo autoincremental e insertamos dos registros.

Código MySQL:
Ver original
  1. mysql> CREATE TABLE tabla(
  2.     -> descripcion VARCHAR(100),
  3.     -> PRIMARY KEY (id));
  4. Query OK, 0 rows affected (0.25 sec)
  5.  
  6. mysql> INSERT INTO tabla VALUES (NULL, 'uno'), (NULL, 'dos');
  7. Query OK, 2 rows affected (0.06 sec)
  8. Records: 2  Duplicates: 0  Warnings: 0
  9.  
  10. mysql> SELECT * FROM tabla;
  11. +----+-------------+
  12. | id | descripcion |
  13. +----+-------------+
  14. |  1 | uno         |
  15. |  2 | dos         |
  16. +----+-------------+
  17. 2 rows in set (0.00 sec)

Observa que automáticamente se asignaron los id's 1 y 2 a los registros, pues en el insert estoy enviando un NULL como valor, sin embargo también podría hacer un INSERT enviándole un valor fijo (cuidando que no exista en la tabla)

Código MySQL:
Ver original
  1. mysql> INSERT INTO tabla VALUES (145, 'ciento cuarenta y cinco');
  2. Query OK, 1 row affected (0.03 sec)
  3.  
  4. mysql> SELECT * FROM tabla;
  5. +-----+-------------------------+
  6. | id  | descripcion             |
  7. +-----+-------------------------+
  8. |   1 | uno                     |
  9. |   2 | dos                     |
  10. | 145 | ciento cuarenta y cinco |
  11. +-----+-------------------------+
  12. 3 rows in set (0.00 sec)

Observa que si después de hacer esto hago un INSERT enviando un NULL asigna el siguiente consecutivo (es decir 146, no 3)

Código MySQL:
Ver original
  1. mysql> INSERT INTO tabla VALUES (NULL, 'ciento cuarenta y seis');
  2. Query OK, 1 row affected (0.07 sec)
  3.  
  4. mysql> SELECT * FROM tabla;
  5. +-----+-------------------------+
  6. | id  | descripcion             |
  7. +-----+-------------------------+
  8. |   1 | uno                     |
  9. |   2 | dos                     |
  10. | 145 | ciento cuarenta y cinco |
  11. | 146 | ciento cuarenta y seis  |
  12. +-----+-------------------------+
  13. 4 rows in set (0.00 sec)

Finalmente, tú puedes hacer uso de la función ALTER TABLE para cambiar el valor de inicio del ALTER TABLE, así:

Código MySQL:
Ver original
  1. mysql> ALTER TABLE tabla AUTO_INCREMENT 200;
  2. Query OK, 4 rows affected (0.51 sec)
  3. Records: 4  Duplicates: 0  Warnings: 0
  4.  
  5. mysql> INSERT INTO tabla VALUES (NULL, 'doscientos');
  6. Query OK, 1 row affected (0.08 sec)
  7.  
  8. mysql> SELECT * FROM tabla;
  9. +-----+-------------------------+
  10. | id  | descripcion             |
  11. +-----+-------------------------+
  12. |   1 | uno                     |
  13. |   2 | dos                     |
  14. | 145 | ciento cuarenta y cinco |
  15. | 146 | ciento cuarenta y seis  |
  16. | 200 | doscientos              |
  17. +-----+-------------------------+
  18. 5 rows in set (0.00 sec)

Ojalá que esto te pueda servir para lo que quieres hacer.

Saludos
Leo.
  #3 (permalink)  
Antiguo 07/08/2012, 16:44
 
Fecha de Ingreso: octubre-2010
Ubicación: Mountain View, United States.
Mensajes: 87
Antigüedad: 14 años
Puntos: 1
Respuesta: Seguir el Auto Increment MySQL

Hola Leo, me parece que es justo lo que estoy buscando.

Voy a probarlo y te cuento al respecto, muchas gracias.
__________________
What are you waiting for?

Etiquetas: auto, increment, seguir, tabla
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 09:25.