2009-11-06 2 views
9

Как изменить количество полей auto_increment в MySQL приращения от значения по умолчанию (1) до n?Изменение шага auto_increment increment на

+3

Вы хотите изменить следующее используемое значение или шаг между значениями (например, значение шага 2, использовать 1, 3, 5, 7 и т. Д.)? –

+0

извините, если вопрос неоднозначен, да, правильно, я хочу, чтобы auto_increment выполнялся как указано вами (например, идентификатор (1,3) в sql-сервере, который увеличивает следующее значение на 3) – sansknwoledge

+0

@sansknwoledge - я отредактировал вопрос надеюсь, спросите, что вы имели в виду! –

ответ

2

Вы можете изменить его с помощью ALTER TABLE:

ALTER TABLE table AUTO_INCREMENT = n; 

Или, если вы хотите сделать установить его с самого начала:

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

Я не * думаю *, что делает то, что он хочет (он отвечает на вопрос, который он задает в теле его вопроса, но не вопрос в названии). Однако вопрос определенно неоднозначен. –

+1

Да, это не делает то, что он пытается сделать (теперь я отредактировал вопрос, чтобы надеяться сделать его более ясным). –

7

Если вы хотите изменить автоинкрементного шаг от 1 до N, то есть решение. Это можно сделать на стороне сервера MySQL: искать параметр запуска «--auto-increment-increment» или использовать следующую команду SET @@auto_increment_increment=2;, но следует предупредить, что это изменение на сервере (все таблицы будут увеличиваться на 2). может что можно было бы считать

Unortodox решения:

  1. Запуск двух серверов MySQL на одном компьютере, с различными портами (один с auto_increment_increment=1 другой с auto_increment_increment=2)
  2. использовать некоторые стороне сервера магии (PHP, ASP,? ?) в сочетании с отключением таблиц auto_increment, чтобы вручную вычислить (простой peek при последнем id и + = 2 будет в порядке) и предоставить идентификатор в запросе INSERT.

Some official MySQL FAQ

+0

привет, я проверил faq, я немного смущен [вы можете настроить каждый сервер для генерации значений автоматического увеличения, которые не конфликтуют с другими серверами. Значение -auto-increment-increment должно быть больше, чем количество серверов (с этой страницы). Может ли кто-нибудь объяснить это? – sansknwoledge

+4

Идея такова: servers = {db1, db2, db3}; DB01: {- автоинкрементный-смещение = 0; - автоинкрементный-инкремент = 3}; DB02: {- автоинкрементный-смещение = 1; - автоинкрементный-инкремент = 3}; db03: {--auto-инкремент смещения = 2; - автоинкрементный-инкремент = 3}; поэтому db1 генерирует только ID, где (n% 3) == 0, для db2 (n% 3) == 1, для db3 (n% 3) == 2; т.е. db1: «3,6,9, ...» db2: «1,4,7, ...» db3: «2,5,8» -> нет конфликта с идентификатором – Piskvor

+0

@Piskvor благодарит за разъяснения, но если у меня есть более одной таблицы в моем db, все с автогенерирующими столбцами, и я хочу, чтобы только одна таблица увеличивалась с шагом 2, а остальные следовали за 3, что мне делать? – sansknwoledge

-3
alter table <table name> auto_increment=n 

где п число вы хотите начать

+0

Это не позволяет отрегулировать начальное значение. –

+0

Это только стартовое значение –

-2

Вы также можете использовать ALTER SEQUENCE sequence_name Инкримент N, где N является новое значение incremnent.

+1

-1 Это не относится к MySQL. –

+0

О, это большая ошибка –

Смежные вопросы