2009-11-06 26 views
9

¿Cómo puedo cambiar los campos de cantidad auto_increment en MySQL incrementando desde el valor predeterminado (1) a n?Cambiar el incremento de los campos de incremento automático por

+3

¿Desea cambiar el siguiente valor utilizado o el paso que se usa entre los valores (por ejemplo, valor de paso de 2, uso de 1, 3, 5, 7, etc.)? –

+0

lo siento si la pregunta es ambigua si es correcta, quiero que el auto_increment se realice según lo indicado por usted (como la identidad (1,3) en el servidor SQL que aumenta el siguiente valor en 3) – sansknwoledge

+0

@sansknwoledge - He editado la pregunta para hacer que pregunte lo que querías decir. –

Respuesta

2

Puede cambiarlo usando ALTER TABLE:

ALTER TABLE table AUTO_INCREMENT = n; 

O si usted quiere hacer configurarlo desde el principio:

CREATE TABLE table (...) AUTO_INCREMENT = n; 
+0

No * pienso * que hace lo que quiere (responde la pregunta que hace en el cuerpo de su pregunta, pero no la pregunta en el título). Sin embargo, la pregunta es definitivamente ambigua. –

+1

Sí, esto no hace lo que está tratando de hacer (ahora he editado la pregunta para, con un poco de suerte, aclararla). –

7

Si desea cambiar el paso autoincrement de 1 a N, entonces hay una solución. Podría hacerse en el lado del servidor MySQL: busque la opción de inicio'auto-incremento-incremento 'o use el siguiente comando SET @@auto_increment_increment=2;, pero tenga en cuenta que se trata de un cambio en todo el servidor (todas las tablas aumentarán en 2).

soluciones Unortodox podrían que podrían ser considerados:

  1. lanzar dos servidores MySQL en la misma máquina, con diferentes puertos (uno con auto_increment_increment=1 otro con auto_increment_increment=2)
  2. uso un poco de magia serverside (PHP, ASP,? ??) combinado con la desactivación de tablas auto_increment para calcular manualmente (simple vistazo al último id y + = 2 estaría bien) y proporcionar id en la consulta INSERT.

Some official MySQL FAQ

+0

hola, he comprobado el faq estoy un poco confundido [puede configurar cada servidor para generar valores de auto-incremento que no entren en conflicto con otros servidores. El valor de incremento de aumentos por incremento debe ser mayor que el número de servidores (desde esa página). ¿Podría algún cuerpo explicar esto? – sansknwoledge

+4

la idea es esta: servidores = {db1, db2, db3}; db01: {- auto-incremento-desplazamiento = 0; -aumento-incremento-incremento = 3}; db02: {- auto-incremento-desplazamiento = 1; -aumento-incremento-incremento = 3}; db03: {--auto-increment-offset = 2; - auto-incremento-incremento = 3}; entonces, db1 solo genera IDs donde (n% 3) == 0, para db2 (n% 3) == 1, para db3 (n% 3) == 2; es decir db1: "3,6,9, ..." db2: "1,4,7, ..." db3: "2,5,8" -> no hay conflicto de id – Piskvor

+0

@Piskvor gracias por la aclaración, pero si tengo más de una tabla en mi base de datos con columnas autogeneradas y quiero que solo una tabla se incremente en pasos de decir 2 y descansar, seguir 3 ¿qué debo hacer? – sansknwoledge

-3
alter table <table name> auto_increment=n 

donde n es el número al que desea iniciar

+0

Esto no ajusta el paso que ajusta el valor de inicio. –

+0

Este es solo el valor de inicio –

-2

También puede utilizar ALTER SEQUENCE sequence_name INCREMENTO POR N donde N es el nuevo valor incremnent.

+1

-1 Esto no se aplica a MySQL. –

+0

Oh, es un gran error –

Cuestiones relacionadas