2011-01-20 45 views
5

Tengo una tabla con una columna de aumento automático. Necesito establecer una de las filas en 1000 y nunca volver a tocarla, pero ahora que la configuré en 1000, el incremento automático sigue comenzando en 1001 y se niega a comenzar en 1. ¿Hay alguna forma de evitar esto?¿Restablecer MySQL auto_increment cuando ya existe un número grande?

+0

¿Qué hay de ponerlo a 0 en su lugar? :) –

+0

Si * puedes * hacer que esto funcione, ¿qué esperarías que ocurriera una vez que el autoincremento llegue a 1000 nuevamente? –

Respuesta

3

Respuesta simple y corta: no puede hacer esto.

Si pudiera, ¿qué pasaría si comienza su autoincremento en 1 e inserta 1000 filas? El último no se pudo insertar debido a "duplicate key" -error.

Si tiene que tener una entrada predefinida, con una identificación que nunca cambia y es fácil de recordar, ¿por qué no usa 0 para eso? O, si realmente necesita usar 1000, ¿cuál es el problema con dejar que las otras columnas comiencen en 1001?

+0

Él no debería pero no puede. Ver mi respuesta –

+0

esto fue ajreal editando mi respuesta, escribí "no puedo" - y ahora remonté esa edición – oezi

7

Usted no puede:

Para cambiar el valor del contador de AUTO_INCREMENT que se utilizará para nuevas filas, haga lo siguiente:

ALTER TABLE t2 AUTO_INCREMENT = valor;

No puede restablecer el contador a un valor inferior o igual a cualquiera que ya se haya utilizado. Para MyISAM, si el valor es menor o igual que el valor máximo actualmente en la columna AUTO_INCREMENT , el valor es restablecer al máximo actual más uno. Para InnoDB, si el valor es menor que el valor máximo actual en la columna , no se produce ningún error y el valor de secuencia actual no se cambia.

http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

0

Puede usar MS Access que enlazar a MySQL como tabla externa, y se puede cambiar el valor del campo de tabla incremento automático de MS Access a través de copiar y pegar desde Excel (primero, es necesario disponer la valor del incremento automático en Excel).

1

Asumiendo que tiene ningún otro identificador de fila con 1000, se puede insertar la fila de la parte inferior de la tabla, a continuación, sólo tiene que utilizar el comando de actualización:

UPDATE table.column SET id = 1000 WHERE id = current_id; 

Suponiendo que la identificación es la columna de incremento automático . Y current_id debe reemplazarse con el id. En el que se inserta la fila.

0

Usted podría utilizar las siguientes declaraciones:

UPDATE tbl SET id=1000 WHERE id=current_id; 
ALTER TABLE tbl AUTO_INCREMENT=1001; 
Cuestiones relacionadas