Ver Mensaje Individual
  #2 (permalink)  
Antiguo 12/07/2013, 07:44
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: alter table para añadir auto_increment a un campo

Hola guardarmicorreo:

Cuando alguna consulta te marque un error, es conveniente que nos digas qué error es el que te está marcando, porque ahí generalmente está implícita la respuesta y se puede determinar cuál es el problema... Sin esta información puede resultar algo complicado ayudarte... Ojo con eso.

Tienes varios detalles en tus intentos por hacer el ALTER TABLE:

1. Un campo AUTO_INCREMENTAL debe estar definido como llave... si no tienes especificado el campo id_tabla1 como llave, debes agregarlo también como llave.

2. En la sentencia, debes especificar el TIPO, independientemente que ya lo hayas hecho al momento de crear la tabla,

3. Siempre es recomendable QUE LEAS EL MANUAL DE REFERENCIA... ahí por lo general vas a encontrar la respuesta a lo que estás preguntando... o si lo prefieres, pregúntale a SAN GOOGLE, el tiene muchas respuestas.


Cita:
he leído y buscado sobre alter table y auto_increment pero no me aclara nada sobre la sintaxis o si me falta algo.
Me sorprende que digas esto, pues en el Manual de Referencia, viene un ejemplo exacto de lo que quieres hacer:

Cita:
Para añadir una nueva columna entera AUTO_INCREMENT llamada c:

mysql> ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT,
-> ADD PRIMARY KEY (c);
Con la estructura de tu tabla:

Código MySQL:
Ver original
  1. mysql> CREATE TABLE tabla1 (
  2.     ->    id_tabla1 INT NOT NULL,
  3.     ->    nombre VARCHAR (100),
  4.     ->    apellidos VARCHAR (100));
  5. Query OK, 0 rows affected (0.26 sec)
  6.  
  7. mysql> ALTER TABLE tabla1 CHANGE
  8.     -> id_tabla1 id_tabla1 INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  9.     -> ADD PRIMARY KEY(id_tabla1);
  10. Query OK, 0 rows affected (0.89 sec)
  11. Records: 0  Duplicates: 0  Warnings: 0
  12.  
  13. mysql> insert into tabla1 values (null, 'Leonardo', 'Córcega');
  14. Query OK, 1 row affected (0.04 sec)
  15.  
  16. mysql> SELECT * FROM tabla1;
  17. +-----------+----------+-----------+
  18. | id_tabla1 | nombre   | apellidos |
  19. +-----------+----------+-----------+
  20. |         1 | Leonardo | Córcega   |
  21. +-----------+----------+-----------+
  22. 1 row in set (0.00 sec)

Observa que el tipo de datos es UNSIGNED, ya que NUNCA TENDRÁS ID's NEGATIVOS. La única diferencia entre lo que pongo y el ejemplo del manual es que en lugar de ADD utilizo CHANGE, pues el campo ya existe.

Si con esto, te sigue marcando error la consulta, por favor, POSTEA EL ERROR, aquí somos informáticos, no adivinos

Saludos
Leo.