Как установить начальное значение и автоинкремент в MySQL?


288

Как установить начальное значение для столбца «id» в таблице MySQL, который начинается с 1001?

Я хочу сделать вставку "INSERT INTO users (name, email) VALUES ('{$name}', '{$email}')";

Без указания начального значения для столбца id.

Ответы:


518

Использовать это:

ALTER TABLE users AUTO_INCREMENT=1001;

или, если вы еще не добавили столбец идентификатора, также добавьте его

ALTER TABLE users ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    ADD INDEX (id);

2
Я понимаю, что это было 7 лет назад, но ... Могу ли я получить объяснение частей этого ответа? Что ADD INDEXздесь делать? Нужно ли добавлять его в том же операторе, что и idстолбец, или я могу определить idстолбец в CREATE TABLEблоке, а затем ADD INDEX(id)?
Майкл Хоффманн

2
Хех, время проходит ... Конечно, определите это в CREATE TABLE, если вы можете это сделать. Вторая часть ответа «ALTER TABLE» подразумевает, что вы уже создали таблицу, и она, вероятно, уже развернута где-то без надлежащего индекса, который необходим для того, чтобы первый «ALTER TABLE» работал как задумано. Я надеюсь, что это объяснение помогает.
Анатолий

Да, это помогает. Я смотрел на некоторые образцы, которые использовали эти утверждения аналогичным образом, и теперь они имеют больше смысла. Спасибо.
Майкл Хоффманн

1
Причина ADD INDEX в том, что без него, если у вас уже есть первичный ключ в существующей таблице, вы получите there can be only one auto column and it must be defined as a key. Вам нужен индекс, так что это будет ключ MUL.
djsumdog

Я попробовал это на таблице, которая была только что создана без добавленных строк. Похоже, это не работает, если в таблицу не добавлена ​​не менее 1 строки.
Соломон Клоссон

54

MySQL - настройка автоинкрементного первичного ключа, который начинается с 1001:

Шаг 1, создайте свою таблицу:

create table penguins(
  my_id       int(16) auto_increment, 
  skipper     varchar(4000),
  PRIMARY KEY (my_id)
)

Шаг 2, установите начальный номер для автоинкрементации первичного ключа:

ALTER TABLE penguins AUTO_INCREMENT=1001;

Шаг 3, вставьте несколько строк:

insert into penguins (skipper) values("We need more power!");
insert into penguins (skipper) values("Time to fire up");
insert into penguins (skipper) values("kowalski's nuclear reactor.");

Шаг 4, интерпретировать вывод:

select * from penguins

печатает:

'1001', 'We need more power!'
'1002', 'Time to fire up'
'1003', 'kowalski\'s nuclear reactor'

1
Как мне поступить, если я хочу установить идентификатор <1000 для специальных пингвинов?
Уильям Ху,

1
Вы можете вставить любой свободный идентификатор, просто поместите его в список столбцов: insert into penguins (my_id, skipper) values(999, "explicit id");(при использовании 0вместо 999авто будет добавлено значение приращения)
адский код

32

MySQL Workbench

Если вы хотите избежать написания sql, вы также можете сделать это в MySQL Workbench, щелкнув правой кнопкой мыши по таблице, выбрав «Изменить таблицу ...» в меню.

Когда откроется представление структуры таблицы, перейдите на вкладку «Параметры» (в нижней нижней части представления) и установите в поле «Автоинкремент» значение следующего номера автоинкремента.

Не забудьте нажать «Применить», когда вы закончите со всеми изменениями.

PhpMyAdmin:

Если вы используете phpMyAdmin, вы можете нажать на таблицу в левой навигационной панели, перейти на вкладку «Операции» и в разделе «Параметры таблицы» изменить значение AUTO_INCREMENT и нажать «ОК».


1
Вы говорите о phpMyAdmin?
Pacerier

1
Нет, я думаю, что он говорит о MySQL Workbench.
Сатурниан,

@ Saturnian, да, ты прав, я имел в виду Workbench. Я отредактирую свой пост, чтобы уточнить это.
Боян Хрнкас,

phpMyAdmin решил проблему автоинкремента за один шаг, я попытался пройти маршрут кода, и он не работал.
Текагами

11

Сначала нужно добавить столбец для автоинкремента

alter table users add column id int(5) NOT NULL AUTO_INCREMENT FIRST

Этот запрос для добавления столбца в первую очередь. Теперь вам нужно сбросить начальное значение автоинкремента. Так что используйте этот запрос

alter table users AUTO_INCREMENT=1001

Теперь ваш стол начался с 1001


6

Вы также можете установить это в create tableзаявлении.

`CREATE TABLE(...) AUTO_INCREMENT=1000`

5

Кроме того, в PHPMyAdmin вы можете выбрать таблицу слева (список таблиц), а затем сделать это, перейдя туда.
Вкладка Операции-> Параметры таблицы-> AUTO_INCREMENT.

Теперь, установите ваши значения и затем нажмите Go под опциями таблицы Bo x.


4

Для этого вы должны установить AUTO_INCREMENTзначение

ALTER TABLE tablename AUTO_INCREMENT = <INITIAL_VALUE>

пример

ALTER TABLE tablename AUTO_INCREMENT = 101

3

В качестве альтернативы, если вам лень писать SQL-запрос. Тогда это решение для вас. введите описание изображения здесь

  1. Откройте phpMyAdmin
  2. Выберите желаемую таблицу
  3. Нажмите на операции вкладку
  4. Установите желаемое начальное значение для AUTO_INCREMENT
  5. Готово..!
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.