2011-02-17 1273 views

Respuesta

71

Creo que desea MODIFY la columna como se describe para el ALTER TABLE command. Podría ser algo como esto:

ALTER TABLE t1 MODIFY b INTEGER NOT NULL AUTO_INCREMENT; 
+8

También podría querer incluir el valor actual de la columna como un desplazamiento, por ejemplo 'ALTER TABLE tbl AUTO_INCREMENT = 100;' – Phil

+13

Si ya tiene valores en la tabla, probablemente obtenga un error duplicado para el valor 1. Para cambiar el valor de AUTO_INCREMENT, la tabla debe estar utilizando el motor MyISAM. Vaya a las propiedades de la tabla, cambie el motor de decir InnoDB a MyISAM, luego cambie el valor de AUTO_INCREMENT a lo que sea siguiente en su secuencia. Una vez que aplique esos cambios, puede volver a cambiar el motor a lo que sea que esté usando. – sday

8
Alter table table_name modify column_name datatype(length) AUTO_INCREMENT PRIMARY KEY 

Usted debe agregar la clave principal de incremento automático, de lo contrario se ha obtenido un error en MySQL.

+0

¡¡Genial ... !!! Funciona bien....!!! –

3

Esto funcionó para mí en caso de que desee cambiar AUTO_INCREMENT-atributo para un no-vacío-tabla:

1.) Exportados toda la tabla como archivo .sql
2.) borró la mesa después de exportación
2.) ¿Cambió necesaria al mando CREATE_TABLE
3.) ejecuta el CREATE_TABLE y comandos INSERT_INTO del sql-archivo
... et Viola

2

simplemente basta con añadir restricción aUTO_INCREMENT en la columna o mODIFICAR cOLUMNA : -

ALTER TABLE `emp` MODIFY COLUMN `id` INT NOT NULL UNIQUE AUTO_INCREMENT FIRST; 

O agregar una columna primero y luego cambiar de columna como -

1. Alter TABLE `emp` ADD COLUMN `id`; 

2. ALTER TABLE `emp` CHANGE COLUMN `id` `Emp_id` INT NOT NULL UNIQUE AUTO_INCREMENT FIRST; 
+0

Este código funciona para mí, ¡gracias! – denis

13

método para agregar AUTO_INCREMENT a una mesa con los datos evitando al mismo tiempo “Entrada duplicada” error:

  1. Haga una copia de la tabla con los datos utilizando INSERT SELECT:

    datos
    CREATE TABLE backupTable LIKE originalTable; 
    INSERT backupTable SELECT * FROM originalTable; 
    
  2. Eliminar en originalTable (para eliminar entradas duplicadas):

    TRUNCATE TABLE originalTable; 
    
  3. Para añadir AUTO_INCREMENT y clave principal

    ALTER TABLE originalTable ADD id INT PRIMARY KEY AUTO_INCREMENT; 
    
  4. Copiar datos de nuevo a originalTable (ver no incluyen la columna recién creada (id), ya que será automática y poblada)

    INSERT originalTable (col1, col2, col3) 
    SELECT col1, col2,col3 
    FROM backupTable; 
    
  5. Eliminar backupTable:

    DROP TABLE backupTable; 
    

Espero que esto sea útil!

Más sobre la duplicación de tablas utilizando Crear como:

Duplicating a MySQL table, indexes and data

+1

Usado hoy en día - excelente solución. – Ducain

+0

Si tiene una tabla grande ... o si desea hacer cosas un poco más inteligentes, reemplace el paso 1 con: CREATE TABLE backupTable LIKE originalTable; RENAME TABLE originalTable TO originalTable.old, backupTable TO originalTable; Omita el paso 2 o perderá todos sus datos. –

0

logré hacer esto con el siguiente código:

ALTER TABLE `table_name` 
CHANGE COLUMN `colum_name` `colum_name` INT(11) NOT NULL AUTO_INCREMENT FIRST; 

Esta es la única manera de que pudiera hacer una columna autoincremento.

INT (11) muestra que la longitud int máxima es 11, puede omitirla si lo desea.

Cuestiones relacionadas