Ver Mensaje Individual
  #9 (permalink)  
Antiguo 18/06/2014, 10:19
Avatar de gnzsoloyo
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 autoincrement

El tema no pasa por lo novato, sino que para modificar datos de una tabla, o cambiar estructuras de la base de datos, tiene que haber reales necesidades, y realmente aún no respondes exactamente lo que pregunto.
A ver si se entiende...
Vamos a dar por supuesto que sabes que una PK es la clave única que identifica un registro dado en cuna tabla determinada, y también vamos a dar por sabido que una PK de una tabla es la forma en que dos tablas se relacionan, cuando la PK de una es FK en otra.
Adicionalmente, vamos a suponer que sabes que en BBDD no se relacionan "archivos", sino tablas, y en ese sentido no existen tales archivos en una base MySQL, como los hay en Excel.

Bien.
Supongamos que tienes una tabla con 12.000 registros, pero la PK de esa tabla no es una columna numérica, ni contiene valores numéricos secuenciales.
Para poder agregarle una columna numerada secuencialmente, sólo sería necesario agregarle una columna AI. Simple, lisa y llanamente Con eso MySQL, al erconocer que es un AI, lo numerera en el mismo orden en que aparecen en la tabla los registros, sin más.
Ahora bien, si la tbla ya tiene una PK, y la misma no es FK en ninguna otra, se dropea la PK (sin quitar la columna), y se agrega la columna, como AI y como PK.
Pero si la PK es FK en otra tabla, esto no se puede hacer. Sólo quedaría agregar una columna y numerarla secuencialmente...

Este último caso requiere de dos pasos:
1) Agregar una columna:
Código MySQL:
Ver original 
2) Hacer un UPDATE masivo para numerarlo. Para eso primero creamos una variable en la sesión, y luego hacemos el UPDATE:
Código MySQL:
Ver original
  1. SET @id=0;
  2. UPDATE tabla SET id_numerico = IF(@id=0, @id:=1,  @id:=@id+1);
Cuidado: Son DOS sentencias separadas.
3) Agregarle la restricción de NOT NULL
Código MySQL:
Ver original
  1. ALTER TABLE tabla MODIFY COLUMN id_numerico id_numerico INT UNSIGNED DEFAULT NOT NULL;

Finalmente, si el tema es poder visualizar en un formulario o una vista, una tabla preexistente, numerada secuencialmente, todo esto es totalmente innecesario. bastaría con hacer una numeracion seucuencial que sólo aplique a mostrarlo en ese momento:
Código MySQL:
Ver original
  1. SELECT (@id:=@id+1) ID, a, b, c, d
  2. FROM tabla JOIN (SELECT @id:=0) T
  3. ...

Esto no está completo, hay muchas consideraciones a realizar, pero la información que das es demasiaod escasa para dartye mejores soluciones.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)